
Ubuntu日本語フォーラム
ログインしていません。
Ubuntu 20.04でMariaDBをインストールするとunixソケット接続認証となります。
この時、システムの一般ユーザーが起動したシェルスクリプトの中で、MariaDBのrootユーザーとしてMariaDBに接続するにはどうすればよいでしょうか。
なお、unixソケット接続認証となっていないMySQLを利用していた時は、システムの一般ユーザーのホームディレクトリに ~/.my.cnf というファイルを作成し、その中に、"user=root" "password=xxxx"と記述して対応していました。
シェルスクリプトの内容は全データベースをダンプするものです。
オフライン
MariaDB を使っていないのでまったくの想像ですが、MariaDB を操作するコマンドを sudo で実行する方法はどうでしょうか。
sudo のパスワード入力は sudores でそのコマンドに NOPASSWD を指定すれば省略できます。
あと、以下の Web ページの方法はどうでしょうか。
Ubuntu 20.04にMariaDBをインストールする方法 | DigitalOcean の「ステップ3 —(オプション)パスワード認証を採用する管理ユーザーを作成する」
オフライン
ry様、ありがとうございます。
新たな質問になりますが、パスワードをスクリプト内に記述せず、シェルスクリプト内でsudoコマンドを自動実行するにはどうすればよいでしょうか?
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
オフライン
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
オフライン
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
オフライン