Mysql登录无密码,拒绝密码

时间:2018-03-01 19:55:51

标签: mysql login passwords

我刚刚构建了一个新的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我被授予访问权限。

e.g。

  

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

诗安全尝试:

  

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

我正在从我的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     |
+------------------------+----------------+

1 个答案:

答案 0 :(得分:0)

答案是设置了通用用户帐户。我跟着这个答案,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

我认为重启是不必要的。