2012-12-12 116 views
0

我在phpmyadmin中执行了此操作。授予用户的权限在mysql中不起作用

我执行的那些:

CREATE USER root IDENTIFIED BY PASSWORD ''; 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; 

我得到这个尝试连接时:

连接失败:SQLSTATE [HY000] [1045]访问被拒绝的用户 '根' @ 'localhost' 的(使用密码:否)

 $dsn = 'mysql:dbname=one'; 
     $user = 'root'; 
     $password = ''; 
     $pdo="Not set"; 
     try{ 
      $pdo=new PDO($dsn,$user,$password); 
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
      }catch(Exception $ex){ 
       echo "Connect failed: ".$ex->getMessage(); 
      } 

注意,上面所用的连接到work..now它不(因为我切换到XAMPP)

+0

我再次测试它,我得到这个:主机= 127.0.0.1。它适用于数字,但不与本地主机一起使用。但是,当我到达本地主机时,我喜欢这样:localhost:82。这可能是它没有工作的原因..因为我没有包括端口号..当我接近它的IP它的工作原理? – BlackFire27

+0

你为什么要创建用户'root'?无论如何它应该始终存在,所以不需要创建它。 –

回答

1

你确定root用户没有密码吗?你有没有安装phpmyadmin来检查这个?

如果问题不是特权,那么它可能是端口。 mysql的默认端口是3306,所以如果你的mysql端口现在是82,你必须在连接中添加端口。

0

请检查create user specification,看来你应该使用另一种语法帐户名称

  • 语法的帐户名是 'USER_NAME' @ 'HOST_NAME'。

所以,就像CREATE USER 'root'@'localhost' IDENTIFIED BY PASSWORD '';。 在你的情况下CREATE USER 'root'@'%';,但我真的不建议使用'%'作为root用户。

+0

我认为这是做的端口..我认为我应该连接localhost:82,而不是localhost – BlackFire27

+0

本地主机和127.0.0.1是类似的,所以,如果你的连接使用127.0.0.1就足够了。 – Vadim

+0

也,如果没有帮助,请检查http://stackoverflow.com/questions/1435445/error-on-creating-connection-to-pdo-in-php批准的答案。这些答案有不同的DSN有用的信息,当我们尝试通过PDO连接到数据库时使用不同的DSN – Vadim

0

您在更改权限后冲洗特权吗?

您应该执行FLUSH PRIVILEGES;告诉服务器重新加载授权表。

0

主机%并不适用于localhost,你需要隆重权限的本地主机单独

+0

我相信你是对的..谢谢 – BlackFire27