お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2021-05-09 20:56:18

Rasum
メンバ
登録日: 2008-12-07

システムの一般ユーザーによるシェルスクリプトの中でMariaDBのrootユーザーとしてMariaDBに接続したい

Ubuntu 20.04でMariaDBをインストールするとunixソケット接続認証となります。
この時、システムの一般ユーザーが起動したシェルスクリプトの中で、MariaDBのrootユーザーとしてMariaDBに接続するにはどうすればよいでしょうか。

なお、unixソケット接続認証となっていないMySQLを利用していた時は、システムの一般ユーザーのホームディレクトリに ~/.my.cnf というファイルを作成し、その中に、"user=root" "password=xxxx"と記述して対応していました。
シェルスクリプトの内容は全データベースをダンプするものです。

オフライン

 

#2 2021-05-10 06:08:20

ry
メンバ
登録日: 2008-07-30

Re: システムの一般ユーザーによるシェルスクリプトの中でMariaDBのrootユーザーとしてMariaDBに接続したい

MariaDB を使っていないのでまったくの想像ですが、MariaDB を操作するコマンドを sudo で実行する方法はどうでしょうか。
sudo のパスワード入力は sudores でそのコマンドに NOPASSWD を指定すれば省略できます。

あと、以下の Web ページの方法はどうでしょうか。
Ubuntu 20.04にMariaDBをインストールする方法 | DigitalOcean の「ステップ3 —(オプション)パスワード認証を採用する管理ユーザーを作成する」

オフライン

 

#3 2021-05-10 07:33:30

Rasum
メンバ
登録日: 2008-12-07

Re: システムの一般ユーザーによるシェルスクリプトの中でMariaDBのrootユーザーとしてMariaDBに接続したい

ry様、ありがとうございます。
新たな質問になりますが、パスワードをスクリプト内に記述せず、シェルスクリプト内でsudoコマンドを自動実行するにはどうすればよいでしょうか?
rootと同じ権限を有し、パスワード認証を要する新たなMariaDBユーザーを作成するのがよさそうなので、後ほどやってみます。

オフライン

 

#4 2021-05-10 21:14:29

Rasum
メンバ
登録日: 2008-12-07

Re: システムの一般ユーザーによるシェルスクリプトの中でMariaDBのrootユーザーとしてMariaDBに接続したい

ry による投稿:

MariaDB を使っていないのでまったくの想像ですが、MariaDB を操作するコマンドを sudo で実行する方法はどうでしょうか。
sudo のパスワード入力は sudores でそのコマンドに NOPASSWD を指定すれば省略できます。

あと、以下の Web ページの方法はどうでしょうか。
Ubuntu 20.04にMariaDBをインストールする方法 | DigitalOcean の「ステップ3 —(オプション)パスワード認証を採用する管理ユーザーを作成する」

紹介頂いたサイトにしたがって、下記の手順でmysqlに接続できました。

(ユーザーadminを作成)
$ sudo mysql -u root

> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'XXXX' WITH GRANT OPTION ;
> FLUSH PRIVILEGES;

(~/.my.cnfを作成)
$ cat ~/.my.cnf
[mysqldump]
user=admin
password=XXXX

[client]
user=admin
password=XXXX


(データベースのダンプを実行)
$ mysqldump -u admin YOURDB

オフライン

 

#5 2021-05-10 22:02:34

Rasum
メンバ
登録日: 2008-12-07

Re: システムの一般ユーザーによるシェルスクリプトの中でMariaDBのrootユーザーとしてMariaDBに接続したい

Rasum による投稿:

ry様、ありがとうございます。
新たな質問になりますが、パスワードをスクリプト内に記述せず、シェルスクリプト内でsudoコマンドを自動実行するにはどうすればよいでしょうか?
rootと同じ権限を有し、パスワード認証を要する新たなMariaDBユーザーを作成するのがよさそうなので、後ほどやってみます。

ry様、申し訳ございません。「sudo のパスワード入力は sudores でそのコマンドに NOPASSWD を指定すれば省略できます」を読み落としていました。
次のとおり、実行できました。

(1)visudoで/etc/sudoersに次の行を記述
taro ALL=NOPASSWD: /usr/bin/mysqldump

(2)ユーザーtaroにて次のコマンドを実行すると、パスワード入力無しでmydatabaseをダンプ出力できた。
$ sudo mysqldump -u root mydatabase

オフライン

 

#6 2021-05-19 15:32:46

Rasum
メンバ
登録日: 2008-12-07

Re: システムの一般ユーザーによるシェルスクリプトの中でMariaDBのrootユーザーとしてMariaDBに接続したい

Rasum による投稿:

ry による投稿:

MariaDB を使っていないのでまったくの想像ですが、MariaDB を操作するコマンドを sudo で実行する方法はどうでしょうか。
sudo のパスワード入力は sudores でそのコマンドに NOPASSWD を指定すれば省略できます。

あと、以下の Web ページの方法はどうでしょうか。
Ubuntu 20.04にMariaDBをインストールする方法 | DigitalOcean の「ステップ3 —(オプション)パスワード認証を採用する管理ユーザーを作成する」

紹介頂いたサイトにしたがって、下記の手順でmysqlに接続できました。

(ユーザーadminを作成)
$ sudo mysql -u root

> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'XXXX' WITH GRANT OPTION ;
> FLUSH PRIVILEGES;

(~/.my.cnfを作成)
$ cat ~/.my.cnf
[mysqldump]
user=admin
password=XXXX

[client]
user=admin
password=XXXX


(データベースのダンプを実行)
$ mysqldump -u admin YOURDB

あくまでrootユーザーとしてmysqldumpを使うなら、次の手法がありました。
・~/.my.cnfあたりにrootユーザーのパスワードを保管しておく
・シェルスクリプトの中でそのパスワードを読み取り、例えばRootPasswd変数に格納する
・"sudo -S"によりパスワードを標準入力から受け取り、mysqldumpを実行する
  echo "$RootPasswd" | sudo -S mysqldump -u root DATABASE

オフライン

 

Board footer

Powered by FluxBB