Ubuntu安装MySQL 8更改默认用户密码

MySQL版本:8.0.26

卸载安装方法一

该方法可针对任意版本的mysql:

sudo rm -rf /var/lib/mysql/
sudo rm -rf /etc/mysql/
sudo apt-get autoremove mysql* --purge -y
sudo apt-get remove apparmor -y
sudo apt-get install mysql-server mysql-common -y

卸载安装方法二

用之前需要知道mysql版本号,所以需要dpkg --list查看。

卸载

四步卸载依次完成,虽然可能有偶多余的操作,但最好按顺序全部执行一遍:
方法一:

dpkg --list
sudo apt-get autoremove --purge mysql-server-5.0
sudo apt-get --purge remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get --purge remove mysql-common (非常重要)

清理残余数据:

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

安装

sudo apt-get install mysql-server    #=》 安装最新版MySQL服务器
sudo apt-get install mysql-client    #=》 
sudo apt-get install libmysqlclient-dev #=》 安装开发包

第一步:进入目录:输入:

sudo cat /etc/mysql/debian.cnf

第二步:使用输出中的账号密码登录MySQL。

mysql -u debian-sys-maint -p b0VhUKEA9XeKm4CY

第三步:进入数据库使用以下语句

(注意:在MySQL旧版本中,使用语句update user set authentication_string=password(“newPassword”) where user=“root”;来设置密码,在mysql8版本中已经不行了,会报错。)
在新版本中,进入mysql后用下面命令进行设置密码:

use mysql;
flush privileges;
alter user 'root'@'localhost' identified by '123456';
flush privileges
quit

注意:如果在直接执行上述命令的alter user 'root'@'localhost' identified by '123456';还是会报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,这是密码设置太简单而不符合新版本MySQL的密码策略要求,如果想要使用简单密码,需要进行以下设置:

question2:密码问题
	mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
	ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
answer2:
	mysql> SHOW VARIABLES LIKE 'validate_password%';
		+--------------------------------------+--------+
		| Variable_name                        | Value  |
		+--------------------------------------+--------+
		| validate_password.check_user_name    | ON     |
		| validate_password.dictionary_file    |        |
		| validate_password.length             | 8      |
		| validate_password.mixed_case_count   | 1      |
		| validate_password.number_count       | 1      |
		| validate_password.policy             | MEDIUM |
		| validate_password.special_char_count | 1      |
		+--------------------------------------+--------+
		7 rows in set (0.01 sec)


1 mysql> set global validate_password.policy=0;
	Query OK, 0 rows affected (0.00 sec)

2 mysql> set global validate_password.special_char_count=0;
	Query OK, 0 rows affected (0.00 sec)

3 mysql> set global validate_password.length=6;
	Query OK, 0 rows affected (0.00 sec)

4 mysql> set global validate_password.mixed_case_count=0;
	Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
	+--------------------------------------+-------+
	| Variable_name                        | Value |
	+--------------------------------------+-------+
	| validate_password.check_user_name    | ON    |
	| validate_password.dictionary_file    |       |
	| validate_password.length             | 6     |
	| validate_password.mixed_case_count   | 0     |
	| validate_password.number_count       | 1     |
	| validate_password.policy             | LOW   |
	| validate_password.special_char_count | 0     |
	+--------------------------------------+-------+
	7 rows in set (0.01 sec)

mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
	Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
	Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye

第四步:重启mysql服务器

service mysql restart;

操作集合,复制粘贴一步到位

第一步:

sudo cat /etc/mysql/debian.cnf
mysql -u debian.cnf中的账号 -pdebian.cnf中的密码
use mysql;
flush privileges;
SHOW VARIABLES LIKE 'validate_password%';
set global validate_password.policy=0;
set global validate_password.special_char_count=0;
set global validate_password.length=6;
set global validate_password.mixed_case_count=0;
SHOW VARIABLES LIKE 'validate_password%';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
quit
sudo service mysql restart;

参考文章:
ubuntu下MySQL的安装与卸载
mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法

posted @ 2021-09-04 09:40  一只小菜菜鸟  阅读(994)  评论(0)    收藏  举报