使用此命令
GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';
我尝试使用以下方式登录:
mysql -u brian -ppassword
错误是:
ERROR 1045 (28000): Access denied for user 'brian'@'localhost' (using password: YES)
我是以root身份执行此操作,但我尝试刷新权限。
我尝试过无数用户,但似乎没有用。我可以创建一个没有密码和登录工作的用户。命令行和来自phpmyadmin
还要检查用户是否在mysql.user中。
显示布里安节目的赠款:
| GRANT ALL PRIVILEGES ON *.* TO 'brian'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
答案 0 :(得分:172)
你可能有这个永久的MySQL问题,其中用户表中的一个默认用户是'' @ localhost
,这最终会在表中拒绝所有localhost
用户。我要做的是mysqldump
mysql
数据库,并在User
表中查找此条目;如果找到,删除它并刷新权限。
有关详细信息,请参阅https://dev.mysql.com/doc/refman/5.5/en/connection-access.html。
一种常见的误解是,对于给定的用户名,当服务器尝试查找连接匹配时,首先使用显式命名该用户的所有行。这不是真的。上面的示例说明了这一点,其中来自h1.example.net的jeffrey连接首先不是由包含'jeffrey'作为User列值的行匹配,而是由没有用户名的行匹配。 因此,jeffrey被认证为匿名用户,即使他在连接时指定了用户名。
答案 1 :(得分:41)
这是匿名用户造成的问题。 一旦我安装MySQL,我总是运行
shell> mysql_secure_installation
并选择设置/更改root密码,删除匿名用户,禁止远程root登录,删除测试数据库。这将删除匿名用户并保护您的安装。它也应该解决你的问题。
答案 2 :(得分:21)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
答案 3 :(得分:10)
此处提供的解决方案均无效。经过大量的错误和试验,我意识到我的密码中有特殊字符。更改密码没有特殊字符解决了问题
答案 4 :(得分:3)
mysql文档有这样的说法: (来自http://dev.mysql.com/doc/refman/5.1/en/adding-users.html):
其中两个帐户的用户名为
monty
,密码为some_pass
。这两个帐户都是具有完全权限的超级用户帐户。仅当从本地主机进行连接时,才能使用'monty'@'localhost'
帐户。'monty'@'%'
帐户使用'%'
通配符作为主机部分,因此可用于从任何主机进行连接。必须让
monty
的两个帐户都可以从monty
开始连接。如果没有localhost帐户,由mysql_install_db
创建的localhost的匿名用户帐户将优先于monty从 当地主持人。因此,monty
将被视为匿名用户。原因是匿名用户帐户的列值比Host
帐户更具体'monty'@'%'
,因此在用户表排序顺序中更早出现。
考虑到这一点,我建议您创建一个具有相同权限的'brian'@'localhost'
用户。
答案 5 :(得分:2)
您在授权声明中忘记了brian周围的引号。试试这样:
GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';
答案 6 :(得分:2)
我认为'拉塞尔席尔瓦'是对的......
我通过
创建了一个用户CREATE USER 'username'@'%' PASSWORD='userpassword';
但我无法登录此帐户。控制台告诉我
ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)
所以我创建了一个具有相同用户名的用户,除了将'%'更改为'localhost',我最终可以以'username'身份登录。这对我来说很奇怪。
答案 7 :(得分:2)
我刚创建了一个帐户,为未来的搜索者提供了另一种可能性:
对于有经验的用户来说,这可能是显而易见的,但我的密码是随机生成的,并且包含一个" \"。花了我一会儿,直到我发现那个角色似乎导致了问题,导致我无法登录。
答案 8 :(得分:1)
在我的情况下,这是由于我点击“SSL:REQUIRE SSL”(在phpmyadmin中)。当我将其更改为“REQUIRE NONE”时,我可以登录。
答案 9 :(得分:0)
您也可以从其他主机连接,然后绕过localhost匿名用户,您可以将其删除并刷新权限:
mysql -u brian -ppassword -h 'other_host_than_localhost'
答案 10 :(得分:0)
在尝试连接到升级到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
答案 11 :(得分:0)
使用以下命令更改为本地密码:
ALTER USER 'username'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password';
答案 12 :(得分:0)
最后这对我有用:
MariaDB [(none)]> drop user ''@'localhost';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
答案 13 :(得分:-1)
即使在验证我没有输入错误的密码后,我也发生了类似的问题,我无法登录。 以下两个步骤解决了我的问题。