web-dev-qa-db-ja.com

どうすれば匿名ログインを無効にできますか?

MySQLドキュメント によると、パスワードを追加するか、匿名アカウントを削除することで、MySQLサーバーを強化できます。

クライアントがパスワードなしで匿名ユーザーとして接続できないようにする場合は、各匿名アカウントにパスワードを割り当てるか、アカウントを削除する必要があります。

強化する前は、ユーザーテーブルは次のようになっています。

mysql> select user,Host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user             | Host      | password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| root             | gitlab    |                                           |
| root             | 127.0.0.1 |                                           |
| root             | ::1       |                                           |
|                  | localhost |                                           |
|                  | gitlab    |                                           |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser           | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+

すべての匿名アカウントを削除したので、userテーブルは次のようになります。 (ユーザーの管理にパペットを使用していますが、パペットはDROP USERコマンドを効果的に実行します)。

mysql> select user,Host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user             | Host      | password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser           | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+

ユーザー名またはパスワードなしでテストシステムにまだログインできるのはなぜですか?
不要なユーザーがログインできないようにするにはどうすればよいですか?

root@gitlab:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 98
Server version: 5.5.32-0ubuntu0.12.04.1 (Ubuntu)
....
mysql> 

更新:パスワードを入力せずにrootとしてログインできることも発見しました。

Update2:私は this question を見つけましたが、これにはいくつかの良い情報がありますが、問題は解決しません。

匿名ユーザーはいません。

mysql> select user,Host,password from mysql.user where user='';
Empty set (0.00 sec)

root@localhostとしてログインします。

mysql> select USER(),CURRENT_USER();
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+ 

デフォルトのパスワード、またはmy.cnfで定義されているskip-grant-tablesがありません

root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'skip-grant-tables'|wc -l
0
root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'pass'|wc -l
0

Update3

私はパペットを使用してこれらの手順を実行してみました(フラッシュ権限を自動的に実行するはずです)。また、権限を手動でフラッシュし、mysqlを再起動してみました。

Update4
また、mysqlのrootパスワードとフラッシュされた権限を変更してみました。パスワードがなくても、どのユーザーとしてもログインできます。

9
spuder

私はそれを考え出した。 /etc/mysql/my.cnfにはパスワードキーペアが格納されていませんでしたが、/ root/.my.cnfにはパスワードが格納されていました。

/root/.my.cnfでパスワードをコメント化するとすぐに、パスワードなしではログインできなくなりました(これは私が期待していたことです)。

6
spuder