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


9

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:いくつかの良い情報があるこの質問を見つけましたが、問題は解決していません。

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

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パスワードとフラッシュされた権限も変更してみました。パスワードがなくても、どのユーザーとしてもログインできます。


回答:


6

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.