除root用户外,用户'test'的访问被拒绝@'localhost'(使用密码:YES)

use*_*726 86 mysql mysql-error-1045

我面临着mysql非root/admin用户的问题,我按照以下步骤创建用户及其权限,如果我做错了,请纠正我,

我安装mysqlRHEL 5.7 64bit,包在下面所提到的,一旦我做了rpm install我们

  1. mysql_install_db然后使用创建mysql db
  2. 然后启动mysql服务
  3. 使用mysql_upgrade我们也在做服务器.

在此过程之后我可以登录,root但是对于非root用户,我无法登录到服务器:

[root@clustertest3 ~]# rpm -qa | grep MySQL
MySQL-client-advanced-5.5.21-1.rhel5
MySQL-server-advanced-5.5.21-1.rhel5


[root@clustertest3 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[root@clustertest3 ~]# ls -ld /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Nov  30 11:09 /var/lib/mysql/mysql.sock

mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT USER(),CURRENT_USER();
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)

[root@clustertest3 ~]# mysql -ugolden -p
Enter password:
ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

这是我面临的问题,有什么解决方案吗?

Alb*_*gía 56

不要将所有数据库的所有权限授予非root用户,这是不安全的(并且您已经拥有该角色的"root")

GRANT <privileges> ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

此语句创建新用户并为其授予选定权限.IE:

GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

查看文档以查看详细的所有权限

编辑:您可以使用此查询查找更多信息(以"root"身份登录):

select Host, User from mysql.user;
Run Code Online (Sandbox Code Playgroud)

看看发生了什么

  • 我不同意关于 root 的说法。是的,您不应该随意授予超级特权。但是,您通常也不应该使用共享帐户,因为您在数据库中没有适当的审计跟踪。如果您必须拥有共享帐户(例如 root),则需要将其他内容包裹在其周围以确保审计跟踪完整无缺。 (3认同)

小智 32

如果您使用远程计算机(示例工作台)等连接到MySQL,请使用以下步骤消除安装MySQL的操作系统上的此错误

mysql -u root -p

CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

尝试登录MYSQL实例.
这对我有用,可以消除这个错误.

  • 即使这样也不起作用,因为即使运行“mysql -u root -p”也会提示错误 (2认同)

nra*_*aus 24

尝试:

CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

甚至更好地使用:mysql_setpermission创建用户


Gen*_*ene 9

看起来你正试图让一个用户'黄金'@'%'但是一个名为'golden'@'localhost'的不同用户正在阻碍/优先.

执行此命令以查看用户:

SELECT user,host FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

你应该看到两个条目:

1)user = golden,host =%

2)user = golden,host = localhost

做这些命令:

DROP User 'golden'@'localhost';
DROP User 'golden'@'%';
Run Code Online (Sandbox Code Playgroud)

重启MySQL Workbench.

然后再次执行原始命令:

CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Run Code Online (Sandbox Code Playgroud)

然后,当您尝试登录MySQL时,请按以下方式键入:

在此输入图像描述

点击"测试连接"并输入密码"密码".

  • 这是我在这里找到的唯一具有一定意义的解决方案。谢谢好先生。 (2认同)

ako*_*ako 7

首先我使用以下方法创建用户:

CREATE user user@localhost IDENTIFIED BY 'password_txt';
Run Code Online (Sandbox Code Playgroud)

谷歌搜索后看到这个,我用以下内容更新了用户的密码:

SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');
Run Code Online (Sandbox Code Playgroud)

然后我可以连接.