web-dev-qa-db-ja.com

rootのmariadbパスワードとunix_socket認証

Ubuntu16.04のMariaDBにrootユーザーがいます。

デフォルトでは、rootユーザーはunix_socket認証プラグインによって認証されます。

設定することで認証方式をパスワード方式に切り替えることができます

update mysql.user set plugin='' where user='root';

これは正常に機能します。だが ...

Unix_socket(rootシェルによる)またはパスワード(localhost:3306で接続されている場合)によってrootユーザーを認証する可能性はありますか?

5
powerpete

信頼性が高く簡単な方法は、別のスーパーユーザーを作成し、パスワードで接続するときにそれを使用することです。

CREATE USER admin@localhost IDENTIFIED BY 'password';
GRANT ALL ON *.* TO admin@localhost WITH GRANT OPTION;
-- etc
6
elenst

MariaDb/MySQLは、「localhost」を「127.0.0.1」とは異なると見なすため、TCPのパスワードを設定でき、次のようなUnixソケットのパスワードは設定できません。

MariaDb:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
INSTALL SONAME 'auth_socket';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION;

MySQL/Percona:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED WITH auth_socket WITH GRANT OPTION;
4
ColinM