虚拟机中已安装MySQL 5,因业务需求需再装MySQL 8版本
查看是否有安装mariadb,如安装了需卸载
(1)查看安装的mariadb程序:rpm -qa | grep -i mariadb
(2)卸载程序:yum remove mariadb
1、下载MySQL 8 安装包,上传到服务器
2、解压安装包,更改文件名称
在安装包文件路径下执行下两条命令
tar -zxvf mysql-8.0.28-el7-x86_64.tar.gz --解压
mv mysql-8.0.28-el7-x86_64.tar.gz mysql-8.0.28 --文件重命名
3、在/tmp路径下创建mysql8.sock空文件
vi /tmp/mysql8.sock
4、创建编辑my.cnf文件
注:大小写敏感配置lower_case_table_names=1 只能在初始化服务器时配置。 禁止在服务器初始化后更改 lower_case_table_names 设置,默认敏感,1为不敏感。
vi my8.cnf(与前期安装的mysql5区分开)
[mysqld]
#设置mysql的安装目录
basedir = /usr/local/mysql-8.0.28
#设置mysql数据库的数据存放目录
datadir =/usr/local/mysql-8.0.28/data
#设置端口
port = 3307
user=root
socket = /tmp/mysql8.sock
#设置字符集
character-set-server=utf8
#日志存放目录
log-error = /usr/local/mysql-8.0.28/data/mysqld.log
pid-file = /usr/local/mysql-8.0.28/data/mysqld.pid
#允许时间类型的数据为零(去掉NO_ZERO_IN_DATE,NO_ZERO_DATE)
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
5、增加用户分配用户组
useradd mysql mysql
chown -R mysql:mysql /usr/local/mysql-8.0.28
6、初始化数据库
cd /usr/local/mysql-8.0.28/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
(启动时会出现Different lower_case_table_names settings for server ('1') and data dictionary ('0').
重新初始化:
./mysqld --initialize --user=mysql --basedir=/mnt/dpan/dajiang/mysql-8.0.26 --datadir=/mnt/dpan/dajiang/mysql-8.0.26/data --lower-case-table-names=1)
生成出一个data目录,代表数据库已经初始化成功,同时会生成临时密码,需记住,如果没有日志打印,则可以进入日志文件中查看
7、启动数据库
./usr/local/mysql8/mysql-8.0.28/bin/mysqld_safe --defaults-file=/etc/my8.cnf &
8、进入数据库
./mysql -uroot -p 后输入临时密码
(非/tmp/mysql.cock时使用 ./mysql --socket=/tmp/mysql8.sock -P 33061 -uroot -p)
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
9、允许所有用户连接数据库
use mysql;
update user set host='%' where user='root';
刷新权限 FLUSH PRIVILEGES;
10、开放防火墙
firewall-cmd --zone=public --add-port=3307/tcp --permanent
重启防火墙
systemctl restart firewalld.service
11、创建服务
编写启动和停止脚本
usr/local/mysql-8.0.28/bin/下创建startup.sh和shutdown.sh
startup.sh:
#!/bin/sh
./usr/local/mysql-8.0.28/bin/mysqld_safe --defaults-file=/etc/my8.cnf &
shutdown.sh:
#!/bin/sh
./usr/local/mysql-8.0.28/bin/mysqladmin --defaults-file=/etc/my8.cnf --socket=/tmp/mysql8.sock -uroot -p123456 shutdown
在/etc/systemd/system下建立mysql8.service文件
[Unit]
Description=mysql8-server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mysql-8.0.28/bin/startup.sh
ExecStop=/usr/local/mysql-8.0.28/bin/shutdown.sh
Restart=always PrivateTmp=true
[Install]
WantedBy=multi-user.target
#刷新配置
systemctl daemon-reload
# 启动服务
systemctl start mysql8.service
# 停止服务
systemctl stop mysql8.service
# 查看服务状态
systemctl status mysql8.service
# 开启自启动
systemctl enable mysql8.service