结论: 经过试验用yum安装 最终是安装的最新版本,如果安装指定版本需要用rpm进行安装,以下是rpm安装过程。
用rpm安装指定的版本,示例:安装mysql-8.0.25版本数据库
步骤:
- 下载bundle.tar包
- 上传服务器并解压安装,记得卸载之前的安装
- 安装完成后要初始化数据库
- 启动mysql服务
- 修改root密码
- 创建测试数据库,添加测试账号
- 添加防火墙规则
- navicat远程测试mysql账户
- 遗留问题:这样的安装的mysql-datadir = /var/lib/mysql/, 如何迁移到单独文件系统中?
####### 尝试用rpm安装指定版本
# 1. 下载bundle.tar包
https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar
或者到清华源上下载,清华源地址:https://mirrors.tuna.tsinghua.edu.cn/
# 2. 上传服务器并解压安装,记得卸载之前的安装
1. 解压
[root@localhost mysql]# tar -xvf mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar
1.rpm -ivh common–>lib–>client–>server 按照这个顺序安装
rpm -ivh mysql-community-common-8.0.19-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-8.0.19-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-client-8.0.19-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-server-8.0.19-1.el7.x86_64.rpm --nodeps --force
# 3. 安装完成后要初始化数据库
[root@localhost mysql]# mysqld --initialize
[root@localhost mysql]# chown mysql:mysql /var/lib/mysql -R
# 4. 启动mysql服务
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl starus mysqld
# 5. 修改root密码
[root@localhost mysql]# cat /var/log/mysqld.log|grep password
2022-02-28T06:14:46.254961Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ElwA4gnf_o&j
[root@localhost mysql]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.25
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> alter user 'root'@'localhost' identified by 'Password!123';
Query OK, 0 rows affected (0.02 sec)
# 修改root为一般密码,否则是复杂密码
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'root123';
Query OK, 0 rows affected (0.19 sec)
# 远程root登录
mysql> update mysql.user set host = '%' where user = 'root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# CTRL+D退出
# 然后测试用nactive连接数据库,远程navicat连接成功。
# 如果报错1251,则有可能是因为mysql版本不同,加密方式也不一样,需要以下操作
ALTER USER 'root'@'%' IDENTIFIED BY '你的密码' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
#6. 创建测试数据库,添加测试账号
CREATE DATABASE IF NOT EXISTS testdb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 'testuser' IDENTIFIED BY '123456';
GRANT ALL ON testdb.* TO 'testuser' IDENTIFIED BY '123456';
# 撤销testuser权限
revoke ALL ON testdb.* from 'testuser' IDENTIFIED BY '123456';
#7. 添加防火墙规则
# 今天 安装了mysql5.7.35版本,远程测试连接失败,查找了下原因是防火墙缘故,没有把mysql服务加入防火墙中。
# 具体操作如下
1. 查看防火墙状态:systemctl status firewalld
active(running):开启状态,正在运行中
inactive(dead):关闭状态,未在运行
2. 开启防火墙:systemctl start firewalld,没有任何提示,表示开启成功
3. 关闭防火墙:systemctl stop firewalld
4. 添加mysql服务到防火墙,并加载
firewall-cmd --permanent --zone=public --add-service=mysql
firewall-cmd --reload
#8. navicat远程测试mysql账户,再次使用navicat远程测试连接,连接成功!
#9. 测试sql脚本
create table t1 (id int , name varchar(100));
insert into t1(id, name) values(1, '1111');
insert into t1(id, name) values(2, '2222');
insert into t1(id, name) values(3, '3333');
##### 以下测试-失败,不能用yum安装指定的小版本mysql,安装后发现都是最新版本的mysql
# 下载 资源库
[root@localhost mysql]# wget https://repo.mysql.com//mysql80-community-release-el7-5.noarch.rpm
[root@localhost mysql]# wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
# 查询并卸载原有的资源库,安装需要的资源库
[root@localhost mysql]# rpm -qa | grep mysql
mysql80-community-release-el7-5.noarch
[root@localhost mysql]# rpm -ve mysql80-community-release-el7-5.noarch
Preparing packages...
mysql80-community-release-el7-5.noarch
[root@localhost mysql]# rpm -ivh mysql80-community-release-el7-1.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:mysql80-community-release-el7-1 ################################# [100%]