1、检测是否安装mysql
[root@keep-mysql ~]# rpm -qa | grep mysql
[root@keep-mysql ~]# yum list installed | grep mysql
2、删除mysql服务
第一种方法
# centos7需要删除mariadb
[root@keep-mysql ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
# 【一般删除,如果提示依赖的其他文件,则不能删除】
[root@keep-mysql ~]# rpm -e mariadb-libs-5.5.68-1.el7.x86_64
错误:依赖检测失败:
libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-9.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-9.el7.x86_64 需要
# 【强力删除,包含各种依赖包】
[root@keep-mysql ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
[root@keep-mysql ~]# rpm -qa | grep mariadb
第二种方法
# 删除 MySQL 及其依赖的包
[root@keep-mysql ~]# yum remove mysql-*
# 查询遗留目录:
[root@keep-mysql ~]# ls /etc/my.cnf(一般情况都没用这个)
/etc/my.cnf
[root@keep-mysql ~]# ll /var/lib/mysql/
total 28700
-rw-rw---- 1 mysql mysql 16384 May 5 10:31 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 May 5 10:31 aria_log_control
-rw-rw---- 1 mysql mysql 18874368 May 5 10:31 ibdata1
-rw-rw---- 1 mysql mysql 5242880 May 5 10:31 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Oct 6 2017 ib_logfile1
drwx------ 2 mysql mysql 4096 Oct 6 2017 mysql
drwx------ 2 mysql mysql 4096 Oct 6 2017 performance_schema
# 删除遗留目录
[root@keep-mysql ~]# rm -rf /etc/my.cnf
[root@keep-mysql ~]# rm -rf /var/lib/mysql/
3、下载离线包
mysql社区版:https://dev.mysql.com/downloads/mysql/
或者使用mysql的yum源安装(网络可用情况):
# 下载 mysql57-community-release-el7-9.noarch.rpm 的 YUM 源:
[root@keep-mysql ~]# wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm
# 安装 mysql57-community-release-el7-9.noarch.rpm:
[root@keep-mysql ~]# yum -y localinstall mysql57-community-release-el7-9.noarch.rpm
# 安装 mysql-server
[root@keep-mysql ~]# yum -y install mysql-community-server --nogpgcheck
4、使用rpm包进行安装
# 解压
[root@keep-mysql opt]# ls
mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar
[root@keep-mysql opt]# mkdir mysql
[root@keep-mysql opt]# tar -xvf mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar -C mysql
# 安装(需要按照顺序执行)
[root@keep-mysql mysql]# rpm -ivh mysql-community-common-5.7.43-1.el7.x86_64.rpm
[root@keep-mysql mysql]# rpm -ivh mysql-community-libs-5.7.43-1.el7.x86_64.rpm
[root@keep-mysql mysql]# rpm -ivh mysql-community-client-5.7.43-1.el7.x86_64.rpm
[root@keep-mysql mysql]# rpm -ivh mysql-community-server-5.7.43-1.el7.x86_64.rpm
5、修改mysql密码验证策略
# 先修改mysql的强密码验证
# 由于 MySQL5.7 采用了密码强度验证插件 validate_password,如果不关闭这个插件,需要设置一个有一定强度的密码;
[root@keep-mysql mysql]# cat /etc/my.cnf
# 添加以下两行
plugin-load=validate_password.so
validate-password=OFF
6、启动mysql服务
[root@keep-mysql mysql]# systemctl start mysqld
[root@keep-mysql mysql]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2023-08-27 00:33:16 CST; 5s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 1438 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 1389 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 1441 (mysqld)
CGroup: /system.slice/mysqld.service
└─1441 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
8月 27 00:33:11 keep-mysql systemd[1]: Starting MySQL Server...
8月 27 00:33:16 keep-mysql systemd[1]: Started MySQL Server.
7、获取mysql生成的随机密码
[root@keep-mysql mysql]# grep "password" /var/log/mysqld.log
2023-08-26T16:33:13.201096Z 1 [Note] A temporary password is generated for root@localhost: 9Orifximdy)1
8、登录mysql服务端,修改root密码
# 进入mysql服务器,修改密码
[root@keep-mysql mysql]# mysql -uroot -p
Enter password: 9Orifximdy)1
mysql> SET PASSWORD = PASSWORD('password');
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql> flush privileges;
# 查询用户表
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select User,authentication_string,Host from user;
+---------------+-------------------------------------------+-----------+
| User | authentication_string | Host |
+---------------+-------------------------------------------+-----------+
| root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
+---------------+-------------------------------------------+-----------+
3 rows in set (0.01 sec)
# 设置用户 root 可以在任意 IP 下被访问
mysql> grant all privileges on *.* to root@"%" identified by "password";
设置用户 root 可以在本地被访问:
mysql> grant all privileges on *.* to root@"localhost" identified by "password";
刷新权限使之生效:
mysql> flush privileges;
mysql> select User,authentication_string,Host from user;
+---------------+-------------------------------------------+-----------+
| User | authentication_string | Host |
+---------------+-------------------------------------------+-----------+
| root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | % |
+---------------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)
9、设置开机自启动
[root@keep-mysql mysql]# systemctl enable mysqld
[root@keep-mysql mysql]# systemctl is-enabled mysqld
enabled
拓展(优化及问题解决方案):
安装MySQL扩展:
https://blog.youkuaiyun.com/henghenghalala/article/details/112478043
忘记mysql的root密码解决办法:
http://blog.youkuaiyun.com/weixin_40990967/article/details/80347745
http://www.cnblogs.com/sbaicl/articles/3132010.html
设置mysql5.7简单密码方法:
http://blog.youkuaiyun.com/kuluzs/article/details/51924374