我正在尝试安装一个基于 PHP 的工具,该工具连接到托管在 Ubuntu 上的 MySQL 数据库。我可以从命令行登录 MySQL 数据库,但运行该应用程序会导致此错误:
Access denied for user '[user]'@'localhost' (using password: YES)
我做了什么:使用指导这次讨论,以下是我采取的一些故障排除步骤。
尝试通过 Telnet 连接到 MySQL 会导致以下乱码:
$ telnet 127.0.0.1 3306 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. A 5.1.41-3ubuntu12.10XIs(ja&7FyO`r>zpDAY{Connection closed by foreign host.
我的/etc/hosts.deny文件是空的。我已将以下几行添加到我的/etc/hosts.allow文件:
mysqld:全部:允许 mysqld-max:全部:允许
虽然
bind-address
在我的/etc/mysql/my.cnf文件设置为127.0.0.1
,我将其注释掉但无济于事。禁用防火墙
刷新权限
值得注意的是,我在每个步骤之后都使用以下命令重新启动了 MySQL:
mysqladmin -u [user] -p shutdown
mysqld_safe &
我错过了什么?
答案1
如果 mysql 管理员可以工作,那么客户端程序也可以工作吗?
如果客户端程序运行正常,则可能 mysql 客户端库已过期,需要更新。(我更熟悉 RedHat,但它可能是类似sudo apt-get update php-mysql
.. 的东西,但我对那个包名不是 100% 确定)
还要确保你使用的名称与设置用户时的名称完全一致。如果你设置用户,则user@localhost
可能无法使用[email protected]
希望有帮助
答案2
尝试这个
mysql >GRANT ALL ON [database name].* TO [user]@'127.0.0.1' IDENTIFIED BY '[PASSWORD]';