MySQL中新用户的问题

时间:2013-09-20 00:59:08

标签: php mysql sql database restart

我是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;

1 个答案:

答案 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