当尝试连接MySQL数据库时,出现类似以下错误:
ERROR 1045 (28000): Access denied for user 'username'@'hostname' (using password: YES/NO)
mysql -u root -p
SELECT User, Host FROM mysql.user;
SHOW GRANTS FOR 'username'@'hostname';
ALTER USER 'username'@'hostname' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'hostname';
FLUSH PRIVILEGES;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';
FLUSH PRIVILEGES;
/etc/mysql/my.cnf
或/etc/my.cnf
)[mysqld]
部分添加或修改:skip-grant-tables
sudo systemctl restart mysql
确保MySQL端口(默认3306)在服务器防火墙中是开放的:
sudo ufw allow 3306
如果上述方法无效,可以:
1. 检查MySQL错误日志(通常位于/var/log/mysql/error.log
)
2. 使用--verbose
选项获取更详细的错误信息
3. 检查是否有插件认证问题(如auth_socket
插件)
希望这些解决方案能帮助您解决MySQL访问被拒绝的问题。