Mysql登录无密码,拒绝密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql登录无密码,拒绝密码相关的知识,希望对你有一定的参考价值。

我刚刚构建了一个新的mysql实例,并且无法与我创建的2个用户建立连接。创建后我连接(没有密码,因为它是第一次登录):

mysql -uroot

一旦连接,我跑了

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Password1');
GRANT ALL PRIVILEGES ON *.* TO 'generic_user'@'%' IDENTIFIED BY 'Password2';
GRANT ALL PRIVILEGES ON *.* TO 'db_admin'@'%' IDENTIFIED BY 'Password3';

保护我的root用户并尝试为我的Web应用程序创建用户并管理它。连接rootPassword1(不是实际密码)工作正常但是如果我使用密码,generic_user无法使用Password2连接。如果我没有密码和generic_user,我被授予访问权限。

EG

mysql -ugeneric_user 欢迎使用MySQL监视器。命令以;结尾;或 g。

安全尝试:

mysql -ugeneric_user -p 输入密码: ERROR 1045(28000):用户'generic_user'@'localhost'拒绝访问(使用密码:YES)

我正在复制并粘贴我的GRANT命令中的密码,所以我知道它是正确的。

我看到有关my.cnf包含凭据的事情,但我的my.cnf也没有:

# Percona Server template configuration

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-time-zone="America/New_York"
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

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

......更新......

经过更多的摆弄后,我想我正在以不同的用户身份进行连接。

我跑了:

TRUNCATE TABLE mysql.proxies_priv;
FLUSH PRIVILEGES;

在我发现user()current_user()将我归还为root之后。

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

现在我得到了:

+------------------------+----------------+
| USER()                 | CURRENT_USER() |
+------------------------+----------------+
| generic_user@localhost | @localhost     |
+------------------------+----------------+
答案

答案是设置了通用用户帐户。我跟着这个答案,https://dba.stackexchange.com/questions/10852/mysql-error-access-denied-for-user-alocalhost-using-password-yes/10897#10897,还有一些额外的东西。

验证我有一个通用帐户

SELECT user,host,password FROM mysql.user WHERE user='' AND host='localhost';

我删除但仍然可以访问因为我没有刷新权限所以完整的命令应该是:

delete FROM  mysql.user WHERE user='' AND host='localhost';

然后在shell中

mysqladmin flush-privileges -uroot -p
mysqladmin reload -uroot -p
service mysql restart

我不认为重启是必要的。

以上是关于Mysql登录无密码,拒绝密码的主要内容,如果未能解决你的问题,请参考以下文章

安装后mysql登录[错误1045(28000):用户'mike'@'localhost'的访问被拒绝(使用密码:YES)]

解决 MariaDB无密码就可以登录的问题

centos7 用户名密码正确无法登录

MySQL5.7改密码无password字段

mysql没有默认密码不能登录,要怎么解决

无法使用 root 和无密码登录 phpmyadmin