mysql anonymous,mysql – 如何禁用匿名登录?

根据MySQL documentation,您可以通过添加密码或删除匿名帐户来强化MySQL服务器.

If you want to prevent clients from connecting as anonymous users

without a password, you should either assign a password to each

anonymous account or else remove the accounts.

在加固之前,我的users表看起来像这样.

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 |

+------------------+-----------+-------------------------------------------+

我删除了所有匿名帐户,因此用户表现在看起来像这样.

(我正在使用puppet来管理用户,但是puppet有效地执行了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:

我尝试用puppet执行这些步骤(它应该自动执行刷新权限).我也手动刷新权限,并尝试重新启动mysql.

UPDATE4:

我也尝试过更改mysql root密码和刷新权限.没有运气,我仍然可以没有密码的任何用户登录.

解决方法:

我想到了.虽然/etc/mysql/my.cnf没有存储密码密钥对,但/root/.my.cnf中存储了密码.

一旦我在/root/.my.cnf中注释掉密码,我就不允许在没有密码的情况下登录(这是我的预期).

标签:mysql,security

来源: https://codeday.me/bug/20190805/1589652.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值