下文为基于Arm架构Linux系统的MySQL8的安装配置,操作系统镜像为CentOS-7-aarch64-Everything-1810.iso。
对于Arm Linux,MySQL官网仅提供MySQL8的rpm安装包,所以从MySQL官网下载mysql-8.0.25-1.el7.aarch64.rpm-bundle.tar进行rpm方式的安装。
SELINUX对MySQL的运行存在干扰,需关闭SELINUX
# vim /etc/selinux/config
把SELINUX=enforcing改为SELINUX=disabled
重启,避免SELINUX干扰MySQL启动。
MariaDB作为MySQL的替代品,在CentOS系统中存在其部分安装,如果存在,则MySQL将无法正常安装,需卸载系统中存在的MariaDB组件。
查询系统中已经存在的MariaDB组件
# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.aarch64
卸载系统中存在的MariaDB组件
# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.aarch64
确认系统中是否已经安装MySQL
# rpm -qa mysql
确认系统中没有mysql配置文件
# find / -name my.cnf
如果存在则进入所在目录,删除my.cnf
# rm -f my.cnf
联网下安装依赖的openssl:
# yum -y install openssl openssl-devel
解压MySQL的tar包:
# tar -xvf mysql-8.0.25-1.el7.aarch64.rpm-bundle.tar
逐个安装:
# rpm -ivh mysql-community-common-8.0.25-1.el7.aarch64.rpm
# rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.aarch64.rpm
# rpm -ivh mysql-community-libs-8.0.25-1.el7.aarch64.rpm
# rpm -ivh mysql-community-libs-compat-8.0.25-1.el7.aarch64.rpm
# rpm -ivh mysql-community-client-8.0.25-1.el7.aarch64.rpm
# rpm -ivh mysql-community-server-8.0.25-1.el7.aarch64.rpm
# rpm -ivh mysql-community-devel-8.0.25-1.el7.aarch64.rpm
# rpm -ivh mysql-community-embedded-compat-8.0.25-1.el7.aarch64.rpm
安装完毕,会生成在/etc文件夹下生成my.cnf配置文件,原生的my.cnf存在错误,其仅包含mysqld节,且默认配置不满足项目需要,需要更改该配置文件。
数据目录
查看/etc/my.cnf文件其datadir指向的data目录为/var/lib/mysql,而该目录下存在众多MySQL程序文件,作为data目录不便于维护,需要在该目录下新建data目录且设置其用户与用户组为mysql作为新的datadir,进入/var/lib/mysql/下执行以下命令:
# mkdir data
# chown -R data
# chgrp -R data
修改my.cnf中datadir=/var/lib/mysql为datadir=/var/lib/mysql/data。
默认加密插件
MySQL8引入了新的默认加密插件caching_sha2_password,但是客户端不支持该加密插件,需要还原为MySQL5所用的默认的加密插件mysql_native_password:my.cnf文件中打开default-authentication-plugin=mysql_native_password选项。
用户
mysqld节中增加用户设置:
user=mysql
最大允许数据包大小
项目中需要数据库允许较大的文本存储范围,而max_allowed_packet默认值仅为4M,需在mysqld节中增加设置为128M:
max_allowed_packet=128M
大小写敏感
MySQL8在Linux中默认敏感,项目中需要大小写不敏感,mysqld节中增加设置:
lower_case_table_names=1
mysqld_safe节
将原有的数据库错误日志文件、pid配置从mysqld节中移除,新建mysqld_safe节,这2项归于此节下。
最终修改的部分如下所示:
[mysqld]
……
default-authentication-plugin=mysql_native_password
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql
max_allowed_packet=128M
lower_case_table_names=1
[mysqld-safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# mysqld --initialize
注意记住初始化密码。
# systemctl start mysqld
# mysql -uroot –p
输入初始化步骤记住的登录密码。
mysql> alter user 'root'@'localhost' identified by "123456"; #改密码
Query OK, 0 rows affected (0.08 sec)
mysql> create user 'root'@'%' identified by '123456'; #改全域
Query OK, 0 rows affected (0.09 sec)
mysql> grant all privileges on *.* to 'root'@'%'; #赋权限
Query OK, 0 rows affected (0.09 sec)
mysql> flush privileges; #立刻生效
Query OK, 0 rows affected (0.03 sec)
mysql> quit;
Linux防火墙需开放MySQL的服务访问端口tcp:3306。
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# firewall-cmd --reload
# firewall-cmd --list-ports
# systemctl enable mysqld
数据库备份与导入均使用Navicat Premium操作。
使用Navicat Premium连接到需要备份数据库的MySQL数据库服务器。
Navicat列表中的当前连接下级的需备份数据库。双击打开。右键–>转储SQL文件–>结构和数据,在另存为窗口中选择存储目录与sql文件名,点击“保存”进行数据库备份。
等待完成即可。
使用Navicat Premium连接到需要导入数据库的MySQL数据库服务器。
在连接列表中对应连接名上右键–>新建数据库,弹出的窗口中输入数据库名:mydb,选择字符集:utf8,选择排序规则:utf8_general_ci。点击确定。
Navicat列表中的当前连接下级出现新建的mydb数据库。双击打开mydb数据库。右键–>运行SQL文件,在弹出的对话框中选择备份的sql文件,点击“开始”执行数据库导入。
等待完成即可。