2013-03-26 126 views
-1
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' WITH GRANT OPTION; 

连接但当我尝试从PHP连接:创建MySQL用户从PHP

mysql_connect("localhost", "newuser", "password"); 

为NEWUSER我得到:

Access denied for user 'newuser'@'localhost' (using password: YES) 

但根成功地连接。

为什么'newuser'无法连接?

其奇怪的,但虽然mysql_connect显示错误,与PDO我可以成功连接。 也许PHP版本5.4.13有一些与mysql_connect函数有关的问题。

求解:开发人员使用mysql_connect(“127.0.0.1”,“newuser”,“evtevtetv $ q”);和PHP认识evtevtetv * $ q *作为变量。

+0

您可能必须使用127.0.0.1而不是本地主机? (如果你在Windows中编程?) – bestprogrammerintheworld 2013-03-26 16:42:51

+0

当你使用CREATE USER时你不需要这样做,但是,你可以尝试运行“FLUSH PRIVILEGES;”与你的MySQL客户端。 – Tim 2013-03-26 16:43:20

+1

你能通过MySQL控制台与新用户连接吗? – bestprogrammerintheworld 2013-03-26 16:46:35

回答

1

如果您尝试此操作,该怎么办?

CREATE USER 'newuser'; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 
1

试试这个

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' WITH GRANT OPTION; 
WITH GRANT OPTION

意味着用户你是谁授予的权限可以进一步授予它..

我们从来没有用它来与创建用户命令

+0

看到这个http://dev.mysql.com/doc/refman/5.0/en/grant.html – alwaysLearn 2013-03-26 16:51:49

1
  1. 你能通过命令行连接吗?像这样

    mysql -u newuser -p 
    

    如果你可以,那么它可能是你的PHP的问题。

  2. 有时您需要重新启动MySQL才能使更改生效。

  3. 像Alexey说的那样,尝试从查询中删除@'localhost'以创建用户名,因为这可能会导致问题。

  4. 你也应该确保实际上正在通过登录到MySQL作为根(mysql -u root -p)创建的用户,如果用户与SELECT * FROM mysql.user;存在看,看看用户名是否存在以及权限是否正确。