mysql 数据库密码问题

初始密码

安装完数据库后,先得启动数据库,即

systemctl  start mysqld

再去查找数据库的初始密码,(yum 安装)

cat /var/log/mysqld.log |grep password|grep localhost:|awk -F"localhost:" '{print $NF}'

执行上面语句就会得到初始密码;mysql -uroot -p'密码'即可登录数据库

常见问题

  • 问题一
ERROR 2002 (HY000): Can’t connect to local MySQL server 
through socket ‘/var/lib/mysql/mysql.sock’ (2)

然后去找这个文件,发现/var/lib/mysql/路径下没有mysql.sock文件。而该文件存在于/tmp/mysql.sock !

解决方法

(1)修改my.cnf文件

vim /etc/my.cnf
[mysqld]

socket = /tmp/mysql.sock

(2)软链

ln -s /tmp/mysql.sock  /var/lib/mysql/mysql.sock
  • 问题二
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

解决方法

update user set authentication_string= password('new-password') where user = 'root' ; 
  • 问题三
ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client 
that supports expired passwords.

解决方法
在配置文件中添加skip-grant-tables语句,重新启动数据库即可实现无密登录。

mysql 数据库密码问题_第1张图片

修改密码

root修改自己密码

  • 方法一
 # mysqladmin -uroot -p'123' password 'new_password'	    //123为旧密码
  • 方法二
mysql> update mysql.user set authentication_string=password('new-passwd!') where user='root' and host='localhost';
  • 方法三
    上面方法将会在后面的版本remove,使用下面方法
    SET PASSWORD='new_password';  直接设置密码

root修改其他用户密码

  • 方法一
mysql> SET PASSWORD FOR user3@’localhost’='new_password';
  • 方法二
UPDATE mysql.user SET authentication_string=password(‘new_password’) WHERE user=’user3’ AND host=’localhost’;

普通用户修改自己密码

 mysql> SET password=password('new_password');
    
    mysql> select * from mysql.user\G
    mysql> alter user 'wing'@'localhost' identified by 'new-passwd';

查看现有的密码策略

mysql> SHOW VARIABLES LIKE 'validate_password%';

参数解释:

1).validate_password_dictionary_file指定密码验证的文件路径;
2).validate_password_length 密码最小长度
3).validate_password_mixed_case_count 密码至少要包含的小写字母个数和大写字母个数;
4).validate_password_number_count 密码至少要包含的数字个数
5).validate_password_policy密码强度检查等级,对应等级为:0/LOW、1/MEDIUM、2/STRONG,默认为1
0/LOW:只检查长度;
1/MEDIUM:检查长度、数字、大小写、特殊字符;
2/STRONG:检查长度、数字、大小写、特殊字符字典文件。
6).validate_password_special_char_count密码至少要包含的特殊字符数

找回密码

	# mysqld --skip-grant-tables --user=mysql &     //跳过数据库权限验证
    
    # mysql 
    mysql> UPDATE mysql.user SET authentication_string=password('new_password')
	WHERE user='root' AND host='localhost';
    mysql> FLUSH PRIVILEGES;   刷新授权表

可能出现的问题

  • 问题一
ERROR You must reset your password using ALTER USER statement before executing this statement

解决方案

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-passwd';
  • 问题二
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

报错原因:密码强度不够
解决方法:(该账号为测试账号,所以采用降低密码策略强度)

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=4;
SHOW VARIABLES LIKE 'validate_password%';

±-----------------------------------------------------±------+
| Variable_name | Value |
±-----------------------------------------------------±------+
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
±----------------------------------------------------±---- --+
6 rows in set (0.00 sec)
再次创建用户,成功

你可能感兴趣的:(mysql)