无法使用mysql中创build的用户login

使用这个命令

GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password'; 

我尝试login:

  mysql -u brian -ppassword 

错误是:

 ERROR 1045 (28000): Access denied for user 'brian'@'localhost' (using password: YES) 

我以root身份执行此操作,并尝试刷新权限。

我与无数的用户尝试过,但它似乎并没有工作。 我可以创build一个没有密码和login作品的用户。 命令行和从phpmyadmin

还要检查用户是否在mysql.user中。

显示布莱恩表演的补助金:

 | GRANT ALL PRIVILEGES ON *.* TO 'brian'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' | 

你可能有永久性的MySQL问题,其中用户表中的一个默认用户是'' @ localhost ,后来在表中拒绝所有localhost用户。 我会做的是mysqldumpmysql数据库,并在User表中查找此条目; 如果find,请将其删除并刷新权限。

有关更多详细信息,请参阅https://dev.mysql.com/doc/refman/5.5/en/connection-access.html

认为对于一个给定的用户名来说,当服务器试图为连接find一个匹配时,首先使用明确指定该用户的所有行是一个常见的误解。 这不是真的。 前面的例子说明了这一点,jeffrey的h1.example.net的连接首先不是由包含'jeffrey'的行作为用户列值,而是由没有用户名的行匹配。 因此,jeffrey被authentication为匿名用户,尽pipe他在连接时指定了一个用户名。

这是由匿名用户造成的问题。 一旦我安装MySQL,我总是运行

 shell> mysql_secure_installation 

并select设置/更改root密码,删除匿名用户,禁止远程rootlogin,删除testing数据库。 这将删除匿名用户并确保您的安装。 它也应该解决你的问题。

 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 

这里提供的解决scheme没有任何工作。 大量的错误和试用后,我意识到我有密码中的特殊字符。 不用特殊字符更改密码解决了这个问题

mysql文档有这样的说法:(从http://dev.mysql.com/doc/refman/5.1/en/adding-users.html ):

其中两个帐户的用户名为monty ,密码为some_pass 。 这两个帐户都是具有完全权限的超级用户帐户。 只有从本地主机连接时才能使用'monty'@'localhost'帐户。 'monty'@'%'帐户使用主机部分的'%'通配符,所以它可以用来从任何主机连接。

有必要有双方的帐户能够从任何地方作为monty连接。 如果没有本地主机帐户,monty从本地主机连接时,由mysql_install_db创build的localhost的匿名用户帐户将优先。 因此, monty将被视为匿名用户。 原因是匿名用户帐户比'monty'@'%'帐户具有更具体的Host列值,因此在用户表sorting顺序中更早。

考虑到这一点,我会build议你用相同的权限创build一个'brian'@'localhost'用户。

您在授权声明中忘记了布莱恩周围的报价。 试试像这样:

GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';

我认为“拉塞尔·席尔瓦”是对的

我创build了一个用户

 CREATE USER 'username'@'%' PASSWORD='userpassword'; 

但是我不能login这个帐户。控制台告诉我这个

 ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES) 

所以我用相同的用户名创build了一个用户,除了把'%'改为'localhost',我终于可以以'用户名'login了。 虽然对我来说这很奇怪。

在我的情况下,这是由于我点击“SSL:REQUIRE SSL”(在phpmyadmin中)。 当我将其更改为“不需要”时,我可以login。

您也可以从其他主机连接,然后本地主机匿名用户被绕过,您可以删除它并刷新权限:

 mysql -u brian -ppassword -h 'other_host_than_localhost' 

我刚刚创build了一个帐户,为未来的search者提供另一种可能性:

对于有经验的用户来说,这可能是显而易见的,但我的密码是随机生成的,并包含一个“\”。 花了我一会儿,直到我发现那个angular色似乎造成了问题,导致我无法login。

升级到17.04后,我有一个类似的问题试图连接到在Ubuntu上运行的Maria DB。

默认情况下只监听localhost,127.0.0.1。

为了让MySQL / Maria侦听所有可用的端口和接口,我需要明确指定bind-address = 0.0.0.0。 我将这行添加到文件/etc/mysql/my.cnf的末尾,即

 ... [client-server] # Import all .cnf files from configuration directory !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mariadb.conf.d/ bind-address=0.0.0.0 

然后…

 sudo /etc/init.d/mysql restart 

即使经过validation,我还没有input错误的密码,我也发生了类似的问题,我无法login。 下面两步解决了我的问题。

  1. 丢弃testing数据库
  2. 删除匿名用户