我正在分离一个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连接到数据库服务器,因为直到我打开数据库盒子上的端口,这才起作用。我知道MySQL身份验证在验证凭据时会经过一个过程,但我无法追踪到这一点。
我还需要做其他流程吗?
更新
这个新的数据库框没有my.cnf文件,所以我创建了它,重新启动MySQL很好。如果我添加bind-address = ip address
,那么MySQL将不会启动,并且我得到Starting MySQL... ERROR! The server quit without updating PID file (...)
的错误。
授予用户特权后,您应该使用刷新特权
您需要FLUSH权限才能完成该过程。
~K