Mysql 拒绝用户访问';测试'@';本地主机';(使用密码:是)根用户除外
我面临mysql非root/admin用户的问题,我按照以下步骤创建用户及其权限,如果我做错了,请纠正我 我正在Mysql 拒绝用户访问';测试'@';本地主机';(使用密码:是)根用户除外,mysql,mysql-error-1045,Mysql,Mysql Error 1045,我面临mysql非root/admin用户的问题,我按照以下步骤创建用户及其权限,如果我做错了,请纠正我 我正在RHEL 5.7 64位上安装mysql,下面提到了包,一旦我完成rpm安装,我们就可以开始了 使用mysql\u install\u db创建mysql数据库,然后 然后启动mysql服务 使用mysql\u升级我们也在对服务器进行升级 完成此过程后,我可以以root身份登录,但使用非root用户时,我无法登录到服务器: [root@clustertest3 ~]# rpm -qa
RHEL 5.7 64位上安装mysql
,下面提到了包,一旦我完成rpm安装
,我们就可以开始了
使用mysql\u install\u db
创建mysql数据库,然后
然后启动mysql服务
使用mysql\u升级
我们也在对服务器进行升级
完成此过程后,我可以以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)
这就是我面临的问题,有什么解决办法吗?试试:
CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost';
FLUSH PRIVILEGES;
或者更好地使用:mysql\u setpermission
创建用户不要将所有数据库的所有权限授予非root用户,这是不安全的(并且您已经拥有该角色的“root”)
查看以查看所有特权的详细信息
编辑:您可以通过此查询查找更多信息(以“root”身份登录):
看看发生了什么事对于那些接受了所有建议但问题仍然存在的人
检查存储过程和视图定义。这些定义者可能不再存在。
当我们将通配符主机(%)更改为IP特定时,我的问题就出现了,这使数据库更加安全。不幸的是,有些视图仍然使用“user”@“%”,尽管“user”@“172…”在技术上是正确的。如果您使用远程计算机(示例工作台)等连接到MySQL,请使用以下步骤在安装MySQL的操作系统上消除此错误
mysql -u root -p
CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;
mysql-u root-p
创建由“”标识的用户“@%%”;
授予**上的所有特权到“@%%”;
同花顺特权;
尝试登录MYSQL实例。
这对我消除了这个错误起到了作用。只需在主机名或MySQL主机地址中添加计算机名而不是“localhost”。我也有类似的问题,后来我发现这是因为我更改了主机名(不是localhost
)
因此,我通过指定--host=127.0.0.1
mysql -p mydatabase --host=127.0.0.1
根据您创建用户的方式,MySQL以不同的方式进行解释。例如,如果您创建这样的用户:
create user user01 identified by 'test01';
MySQL希望您使用grant all on.*给user01一些特权代码>
别忘了刷新权限代码>
但是,如果您创建这样的用户(通过传递IP地址),则必须将其更改为:
create user 'user02'@'localhost' identified by 'teste02';
因此,要授予某些特权,您必须这样做:
grant all on <your_db>.* to user02@localhost;
flush privileges;
grant all on.*授予user02@localhost;
同花顺特权;
在我的例子中,同样的错误也会发生,因为我试图通过键入“mysql”而不是“mysql-u root-p”来使用mysql看起来您试图让一个用户成为“golden”@“%”,但另一个名为“golden”@“localhost”的用户妨碍了/具有优先权
执行以下命令以查看用户:
SELECT user,host FROM mysql.user;
您应该看到两个条目:
1) 用户=golden,主机=%
2) user=golden,host=localhost
执行以下命令:
DROP User 'golden'@'localhost';
DROP User 'golden'@'%';
重新启动MySQL工作台
然后再次执行原始命令:
CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
然后,当您尝试登录MySQL时,按如下方式键入:
点击“测试连接”并输入您的密码“密码” 从mysqlworkbench连接服务器并运行此命令->
更改由“yourpassword”标识的用户“root”@“localhost” 首先,我使用以下方法创建用户:
CREATE user user@localhost IDENTIFIED BY 'password_txt';
在谷歌搜索和查看之后,我使用以下方法更新了用户密码:
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');
然后我可以连接。确保用户在用户表中有localhost条目。这就是我遇到的问题。例:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
对于恼人的搜索,请在搜索此错误消息后到达此处:
拒绝访问用户的帐户someuser@somewhere'(使用密码:是)
我的问题不是用引号括起密码。例如,我需要使用-p'password'
而不是-ppassword
试试这个:
如果您已经创建了用户,则可能使用错误的密码创建了用户
因此,删除该用户并通过这样做创建另一个用户。
查看您当前的用户
从mysql.User中选择主机、用户代码>
删除用户
删除用户“”@'localhost'代码>
之后,您可以使用正确的密码再次创建用户
创建用户“”@'localhost',通过“”使用mysql_native_密码标识。
然后
FLUSH特权代码>
在访问数据库时,您可能还会遇到更多的错误,如果您遇到该错误,请运行此命令
将**上的所有权限授予'@'localhost'
您能否以root用户身份登录,然后从mysql执行选择*。用户
接受对您有效的答案,以便其他用户知道您是如何解决问题的。这并不能解决问题。创建由“some_pass”标识的用户“goldy”@“%”;是一个有效的查询,因为his的%
应该适用于所有主机,但没有解决它。因此,通过指定localhost
它应该可以工作。如果这不起作用,那么mysql中的某些东西就不起作用了,因为即使在运行“mysql-u root-p”时,它也会提示错误。谢谢你让我走上了正确的轨道。我甚至不知道视图和存储过程上的SQL安全设置。最后,我将SQL安全设置为我的视图上的Invoker,以便它使用执行命令的用户的权限,而不是创建视图的用户的权限。这里有一个链接供参考:我不同意关于root的说法。是的,你不应该随意给予超级特权。但是,您通常也不应该使用共享帐户,因为您在数据库中没有适当的审计跟踪。如果您必须拥有共享帐户,例如
CREATE user user@localhost IDENTIFIED BY 'password_txt';
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';