哈特中尉's Blog

不会写代码的司机不是好厨师!

centos7安装mysql8(rpm和yum)

特别说明

1
2
1.yum安装方式下载太慢,而且卸载重装会再次下载,费时;故推荐rpm安装。
2.系统版本:centos7.9

关闭SELinux(重要,阿里云等服务器默认关闭,建议先检查)

1
2
3
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
设置后需要重启才能生效,reboot命令。

卸载mariadb/mysql(centos7自带)

1
2
3
4
5
6
rpm -qa | grep mariadb #查找已经安装mariadb
rpm -qa | grep mysql #查找已经安装mysql
yum list installed | grep mysql

yum -y remove mysql-libs.x86_64
rpm -e mariadb-libs-5.5.65-1.el7.x86_64 --nodeps #参数名称必须和上面查出的名称一致

获取安装包

可以本地上传,也可以用国内镜像下载(此处给出网易和清华镜像),比mysql官网快很多。不同版本需修改地址中文件名称。

1
2
3
4
5
6
7
8
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar #mysql8官方下载,注意是el7

centos8/rockyLinux8/AnolisOS8
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.35-1.el8.x86_64.rpm-bundle.tar #注意是el8

#mysql8国内镜像下载(更新不及时)
http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar

解压安装包(上面直接下载mysql合集,也可以按需分别下载每个rpm包)

1
tar -xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar 

安装rpm包(common、libs、client、server为必须)

centos7(mysql8.0.32)

1
2
3
4
5
6
7
8
rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-devel-8.0.32-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-embedded-compat-8.0.32-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-compat-8.0.32-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-test-8.0.32-1.el7.x86_64.rpm --nodeps --force

centos8/rockyLinux8/AnolisOS8(mysql8.0.35)

1
2
3
4
5
6
7
8
rpm -ivh mysql-community-client-8.0.35-1.el8.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-common-8.0.35-1.el8.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-devel-8.0.35-1.el8.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-embedded-compat-8.0.35-1.el8.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-8.0.35-1.el8.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-compat-8.0.35-1.el8.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-server-8.0.35-1.el8.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-test-8.0.35-1.el8.x86_64.rpm --nodeps --force

卸载rpm包(如果重新安装可参考)

1
2
3
4
5
6
7
8
rpm -e mysql-community-embedded-compat-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-test-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-client-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-devel-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-server-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-common-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-compat-8.0.32-1.el7.x86_64 --nodeps
安装依赖(否则下一步初始化失败)
1
2
yum -y install libaio
yum -y install numactl
初始化数据库
1
mysqld --initialize --console --lower-case-table-names=1

特别注意:lower-case-table-names默认是0,此时activiti的表名称全部是大写,会导致数据库存在两张表act_evt_log和ACT_EVT_LOG,程序报错。
详细解释:https://www.cnblogs.com/mydriverc/p/8296647.html

目录授权,否则启动失败
1
chown -R mysql:mysql /var/lib/mysql/

说明:给操作系统的mysql账号授权/var/lib/mysql/目录,否则mysqld服务无法启动。
默认/etc/my.cnf中的datadir=/var/lib/mysql,代表mysql数据存放路径。

更改mysql的数据文件路径(可选)

1、复制/var/lib/mysql/var/lib/mysql_new
2、更改/etc/my.cnfdatadir=/var/lib/mysql_new
3、chown -R mysql:mysql /var/lib/mysql_new/

修改/etc/my.cnf中lower-case-table-names配置(可选)

1.如果初始化数据的时候没有指定lower-case-table-names参数的值,即默认0;则不需要此配置。
2.如果初始化指定了参数,但是my.cnf中没有配置,则启动失败。查看/var/log/mysqld.log会发现此参数初始化值和配置值不同导致。
Different lower_case_table_names settings for server ('0') and data dictionary ('1').

1
2
[mysqld]
lower-case-table-names=1
启动服务(启动失败请看上面步骤)
1
2
3
4
5
6
7
启动服务
systemctl start mysqld
查看状态,启动失败查看原因
systemctl status mysqld
开机自启动mysql
systemctl enable mysqld
systemctl daemon-reload

如果mysql服务可以正常启动,恭喜你,mysql安装完成。

查看root临时密码
1
grep 'temporary password' /var/log/mysqld.log
1
2
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 3yMoxa?*nMrl
自动成临时密码:3yMoxa?*nMrl
登录mysql(回车后输入上面的临时密码即可登录mysql)

温馨tip:可以将上面查询的密码复制出来,执行命令后复制到剪切板,然后点击鼠标右键直接粘贴,避免输入错误。

1
2
3
mysql -uroot -p
或者
mysql_secure_installation
修改root密码
1
2
3
4
5
6
mysql8
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
flush privileges;
mysql5.7
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
flush privileges;

注意:mysql8新的密码策略,很多mysql客户端工具不支持,所以用原来的密码策略。切记!

添加远程登录用户(例如:develop)

1
2
3
create user 'develop'@'%' identified with mysql_native_password by '你的密码';
grant all privileges on *.* to 'develop'@'%' with grant option;
flush privileges;

说明:创建一个develop用户,可以在任何客户端登录(root只能在本机),拥有所有数据库权限(并且可以授给其他mysql用户)。

添加项目用户(例如:crm,数据库crm,用户名crm)
1
2
3
4
create database crm; #创建crm数据库
CREATE USER 'crm'@'%' IDENTIFIED WITH mysql_native_password BY 'crm2018' PASSWORD EXPIRE NEVER;#创建用户并且密码永不过期
GRANT ALL PRIVILEGES ON crm.* TO 'crm'@'%' with grant option; #授权数据库所有操作给用户
FLUSH PRIVILEGES;

my.cnf参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[client]
port=3417
default-character-set=utf8mb4

[mysqld]
default-authentication-plugin=mysql_native_password
port=3417
max_connections=1000
character-set-server=utf8mb4
lower-case-table-names=1 #表名大小写不敏感
default-storage-engine=INNODB

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' #解决group by报错
关闭防火墙

注意:远程访问mysql,关闭防火墙配置,否则无法访问哟。

1
2
systemctl stop firewalld.service
systemctl disable firewalld.service

yum安装方式

1
2
3
4
5
yum list installed | grep mysql   #查看已安装的mysql
yum -y remove mysql-libs.x86_64 #卸载已经安装
rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm #安装mysql源
yum --enablerepo=mysql80-community install -y mysql-community-server
yum install -y mysql-community-client

安装完成后,初始化等操作和rpm类似。

彻底卸载mysql

1
2
3
4
5
rpm -qa|grep mariadb
rpm -qa|grep mysql
find / -name mysql

rm -rf /var/lib/mysql

查看log文件位置

cat /etc/my.cnf

1
log-error=/var/log/mysqld.log

其他参考资料:
https://blog.csdn.net/weixin_42266606/article/details/80879571
https://www.cnblogs.com/kevingrace/p/10482469.html