【发布时间】:2012-03-15 17:54:55
【问题描述】:
我正在分离一个 PHP Web 服务器并将我的 MySQL 数据库移动到另一个盒子。实际上在 AWS 上有两个实例。
我可以以用户身份连接到新的 MySQL 机器,但不能执行任何查询。
在 MySQL 上:
CREATE USER 'username'@'ip address' IDENTIFIED BY 'password';
GRANT ALL ON dbname.* TO 'username'@'ip address' IDENTIFIED BY 'password';
** 更改为 GRANT ALL 进行测试,以确保限制没有问题
已验证用户
mysql> SELECT user, host, password FROM mysql.user;
| username | ip address | *... |
mysql> show grants for 'username'@'ip address'
+-----------------------------------------------------------------------------------------------------------------+
| Grants for username'@'ip address |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'ip address' IDENTIFIED BY PASSWORD '*...' |
| GRANT ALL PRIVILEGES ON `dbname`.* TO 'username'@'ip address' |
+-----------------------------------------------------------------------------------------------------------------+
当我尝试打开从数据库中提取信息的 PHP 页面时,我得到了
Invalid authorization specification: 1045 Access denied for user
'username'@'ip address' (using password: YES)
在同一个盒子上一切正常,我知道用户正在从 web 连接到 db 服务器,因为直到我打开 db 盒子上的端口才起作用。我了解 MySQL 身份验证在验证凭据时会运行一个过程,但我无法追踪到这一点。
我还需要做一些其他的过程吗?
更新
这个新的 db box 没有 my.cnf 文件,所以我创建了它,重新启动 MySQL 就好了。如果我添加bind-address = ip address,那么MySQL 将无法启动,我会收到Starting MySQL... ERROR! The server quit without updating PID file (...) 的错误。
【问题讨论】:
标签: php mysql authentication authorization