奇怪的是,似乎我的mysql不允许创建具有特定数据库访问权限的用户。使用MySQL Workbench:
CREATE USER 'testUser'@'localhost' IDENTIFIED BY 'thepasswordhere';
GRANT ALL PRIVILEGES ON testDatabaseName TO 'testUser'@'localhost' WITH GRANT OPTION;
SHOW GRANTS;
我没有看到任何提及已创建用户的授予权限。这解释了为什么我得到mysqli::mysqli(): (28000/1045): Access denied for user 'testUser'
我错过了哪一步?更新:即使我输错了用户名,我仍然会受到影响的0行成功:GRANT ALL PRIVILEGES ON testDatabaseName TO 'testkUser'@'%' WITH GRANT OPTION;
所以我觉得我的本地mysql出了问题。关于修复的任何想法?
答案 0 :(得分:1)
CREATE USER 'testUser'@'localhost' IDENTIFIED BY 'thepasswordhere';
GRANT ALL PRIVILEGES ON testDatabaseName.* TO 'testUser'@'localhost' WITH GRANT OPTION;
SELECT sql_grants FROM common_schema.sql_show_grants;
改变了什么?我只是在数据库名称之后添加了.*
。这是必要的,因此用户可以访问数据库中的所有表。
同样对于最新的mysql,我相信你需要在使用grant时输入用户密码。
如下所示:
CREATE USER 'testUser'@'localhost' IDENTIFIED BY 'thepasswordhere';
GRANT ALL PRIVILEGES ON testDatabaseName.* TO testUser@localhost IDENTIFIED BY 'pass' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SELECT sql_grants FROM common_schema.sql_show_grants;
迈克尔在问题评论中提到:
SHOW GRANTS FOR 'testUser'@'localhost';
...否则,SHOW GRANTS;
显示您的权限 - 与帐户关联的权限 目前已登录。