我有以下情况:
MySQL server:
IP: 192.168.0.1
user: testing
pass: testing123123
MySQL client #1:
IP: 192.168.0.2
MySQL client #2:
IP: 192.168.0.3
进入 MySQL 服务器:
GRANT ALL PRIVILEGES ON *.* TO testing@'192.168.0.2' IDENTIFIED BY 'testing123123';
flush privileges;
客户端 #1 被授予权限,而客户端 #2 未被授予权限。
然后在客户端#1 shell中:
mysql -h192.168.0.1 -uuser_bla_bla -pbla_bla_bla
ERROR 1045 (28000): Access denied for user 'user_bla_bla'@'192.168.0.2' (using password: YES)
进入Mysql Server日志:
2017-03-11 12:13:10 82588 [Warning] Access denied for user 'user_bla_bla'@'192.168.0.2' (using password: YES)
一切正常:用户名/密码错误>>访问被拒绝>>记录日志
现在客户端 #2 的 shell:
mysql -h192.168.0.1 -uuser_bla_bla -pbla_bla_bla
ERROR 1130 (HY000): Host '192.168.0.3' is not allowed to connect to this MySQL server
进入Mysql Server日志:没有什么!
我的my.cnf:
[mysqld]
log_warnings = 2
log_error=/var/log/mysql_error.log
MySQL 日志未记录“主机不允许”,它仅记录“拒绝用户访问”。
问题:如何记录 MySQL“主机不允许”的情况?
谢谢!
答案1
最近,我面临着需要找出 MySQL 5.7 服务器的不需要的登录尝试的来源,并发现了这个问题。因此,这里有一个可行的解决方案:
- 启用常规登录
my.cnf
:
[mysqld]
general_log_file = /var/log/mysql/mysql-query.log
general_log = 1
- 重启 mysql
- 等待一段时间,查看收集到的数据:
grep -B 1 'Access denied' /var/log/mysql/mysql-query.log
你会看到类似
2022-05-13T19:33:27.278884Z 2 Connect root@localhost on using Socket
2022-05-13T19:33:27.278923Z 2 Connect Access denied for user 'root'@'localhost' (using password: NO)
--
2022-05-13T19:34:02.517332Z 10 Connect bad_user@bad-ip-addr on my_database using TCP/IP
2022-05-13T19:34:02.517392Z 10 Init DB Access denied for user 'bad_user'@'%' to database 'my_database'
--
时间戳后带有数字(即 2、10)的列包含连接 ID,您可以轻松地将不需要的用户与其地址进行匹配。
请注意,保持general_log
启用状态可能会导致磁盘空间消耗大,并可能降低性能