我mysql-server-5.5
有Ubuntu Server 12.04
我意识到,当以任何系统用户mysql
身份输入命令时,我可以访问 mysql,尽管我只能显示和数据库,但如何禁用此访问?test
information_schema
我没有注册这些用户,mysql
所以我不希望它具有访问权限。
这是发生了什么
user-one@server:~$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 39950
Server version: 5.5.38-0ubuntu0.12.04.1-log (Ubuntu)...
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.00 sec)
user-two@server:~$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 39950
Server version: 5.5.38-0ubuntu0.12.04.1-log (Ubuntu)...
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.00 sec)
以root身份查找此用户以防他们已注册
mysql> use mysql
mysql> SELECT * FROM user WHERE User = 'user-one';
Empty set (0.00 sec)
mysql> SELECT * FROM user WHERE User = 'user-two';
Empty set (0.00 sec)
默认情况下
''@localhost
,其他一堆帐户存在于新安装的 MySQL 实例中。如果你执行
SELECT user()
你可能会看到这样的东西:该用户实际上并不存在,它实际上被映射到以下位置进行身份验证和授权:
为了解决这个问题,始终在设置生产数据库后运行脚本
mysql_secure_installation
,它会要求您设置 mysql root 密码、删除远程访问并删除无密码默认帐户。这应该是任何正确的 mysql 安装过程的一部分,并且记录在此处。从 5.6 和 5.7 开始,使用了更好的安全默认值,但仅限于官方包。
请记住,默认情况下,所有用户都具有写入
test%
数据库的写入权限。这是一个非常危险的默认值,应该在生产前修复。