Ubuntu16.04のMariaDBにrootユーザーがいます。
デフォルトでは、rootユーザーはunix_socket
認証プラグインによって認証されます。
設定することで認証方式をパスワード方式に切り替えることができます
update mysql.user set plugin='' where user='root';
これは正常に機能します。だが ...
Unix_socket(rootシェルによる)またはパスワード(localhost:3306で接続されている場合)によってrootユーザーを認証する可能性はありますか?
信頼性が高く簡単な方法は、別のスーパーユーザーを作成し、パスワードで接続するときにそれを使用することです。
CREATE USER admin@localhost IDENTIFIED BY 'password';
GRANT ALL ON *.* TO admin@localhost WITH GRANT OPTION;
-- etc
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;