Rootパスワードを設定してmysqlを保護したい。ルートパスワードを正常にリセットしました。
MariaDB [(none)]> select Host, User, Password from mysql.user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *58319282EAB9E38D49CA25844B73DA62C80C2ABC |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)
ただし、フラッシュ権限を取得した後、Mysqlを再起動しても、パスワードを入力せずに(ローカルホストで)mysqlにログインできます。
root@myhost:/# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.0.29-MariaDB SLE 12 SP1 package
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
接続時にmysqlにパスワードを要求させるにはどうすればよいですか?ありがとう!
MySQLテーブルには、pluginという列があります。
MariaDB [(none)]> SELECT Host, user, password, plugin FROM mysql.user LIMIT 0,1;
+-----------+------+-------------------------------------------+--------+
| Host | user | password | plugin |
+-----------+------+-------------------------------------------+--------+
| localhost | root | * | |
+-----------+------+-------------------------------------------+--------+
1 row in set (0.00 sec)
正しく覚えている場合、mariaDBインストールのデフォルトプラグインは「console」または「unix_socket」であり、このプラグインを使用すると、コンソールからパスワードなしで入力できます。ただし、パスワードを使用した認証も無効にし、別のクライアントから接続することはできません。
プラグインフィールドを空の( '')値で更新してから、FLUSH PRIVILEGESを使用します。
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
これで、問題は解決しました。
これを変更する必要があることがわかりました。
UPDATE mysql.user SET plugin = 'auth_socket' WHERE user = 'root' AND Host = 'localhost';
に
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND Host = 'localhost';
これはパスワードAFAICTのプラグインです。
この質問は古いことは知っていますが、同じ問題があり、以下の手順で問題を解決しました。
linuxターミナルで、以下のコマンドを実行してrootユーザーの新しいパスワードを設定します。rootパスワードが既に設定されている場合は、この手順をスキップします。
mysqladmin --user=root password "newpassword"
Mysqlにログイン
mysql -uroot -p
「root」ユーザーのパスワードを入力してください
MariaDBコンソールで次のクエリを実行します
MariaDB [(none)]> select Host,user,password from mysql.user;
「ユーザー」列の値を持つレコードが ''(空)であることに気付く場合があります。次のクエリを使用してそれらのレコードを削除してください
MariaDB [(none)]> delete from mysql.user where user='';
MariaDB [(none)]> flush privileges;
Query OK, 2 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
#$ mysql
ERROR 1045 (28000): Access denied for user ''@'localhost' (using password: NO)
上記の手順を実行した後、パスワードなしでmysqlにログインすることはできません。