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应用程序创建用户并管理它。连接root
和Password1
(不是实际密码)工作正常但是如果我使用密码,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)]