我是MySql的新手,无法解决我遇到的问题(Google搜索没有给我留下任何结果)。新用户的问题是“用户拒绝1045访问权限”。
我正在PHP上编写一个小脚本,它将自动在MySQL中创建新数据库,并添加两个只有该数据库权限的新用户。 这是代码:
$dbh = new PDO("mysql:host=localhost", $root, $rootpass);
使用superadmin权限连接到MySQL服务器。
$dbh->SetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec("CREATE DATABASE new_db ;
GRANT ALL PRIVILEGES
ON new_db.*
TO new_db_admin@localhost
IDENTIFIED BY 'password';
GRANT SELECT
ON new_db.*
TO new_db_guest@localhost
IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;"
);
使用此脚本,我想自动为“new_db”创建2个新用户。第一个“new_db_admin”使用数据库而不涉及MySQL superadmin,第二个让站点用户连接到数据库。 (恕我直言,最好给予访问者权限“只读”,因为它会大大降低SQL注入的可能性。)
创建新数据库并添加新用户后,我使用“new_db_admin”创建与MySQL服务器的新连接并添加新表。在这个层面上,一切都很好。从任何用户(new_db_admin,new_db_guest)连接到MySQL服务器都没有问题。
但是在重新启动MySQL服务器或重新启动我的PC后,我发现“用户new_db_admin @ localhost”的错误1045访问被拒绝。使用另一个新用户“new_db_guest”访问MySQL效果很好。
我尝试只创建一个用户管理员或访客。但是在重新启动MySQL服务器之后,我得到了相同的“错误1045访问被拒绝用户new_db_admin @ localhost”或者如果它只创建了guest:“错误1045访问被拒绝用户new_db_guest @ localhost”。在所有情况下,MySQL服务器的SUPradradmin运行良好。
有人可以帮助我解决这个问题。我需要一个决定,允许我自动为这个数据库创建新的数据库和新用户,而不会在将来遇到麻烦。
任何帮助都会受到极大的赞赏!
以下是我用于通过coomand line在MySQL中创建用户的代码。
CREATE USER 'ADMIN'@'HOSTNAME' IDENTIFIED BY 'admin-pass';
SET PASSWORD FOR 'ADMIN'@'HOSTNAME' = PASSWORD('admin-pass');
GRANT ALL PRIVILEGES
ON 'DBNAME'.*
TO 'ADMIN'@'HOSTNAME'
IDENTIFIED BY 'admin-pass';
CREATE USER 'GUEST'@'HOSTNAME' IDENTIFIED BY 'guest-pass';
SET PASSWORD FOR 'GUEST'@'HOSTNAME' = PASSWORD('guest-pass');
GRANT SELECT
ON 'DBNAME'.*
TO 'GUEST'@'HOSTNAME'
IDENTIFIED BY 'guest-pass';
FLUSH PRIVILEGES;
答案 0 :(得分:0)
新编辑:
也可以在授权声明后尝试执行“ flush privileges ”。
http://dev.mysql.com/doc/refman/5.0/en/privilege-changes.html
尝试将Grant SQL拆分为create user,然后授予。我知道你可以用其他方式编写它,但只要看它是否有帮助,即使只是为了调试。
类似的东西:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
http://dev.mysql.com/doc/refman/5.1/en/grant.html