本文讲解aarch64的centos7下mysql5.7的安装。对于mysql8,有官方的rpm安装(https://centos.pkgs.org/7/mysql-8.0-aarch64/)
1.wget下载5.7.27版本的MySQL。
wget https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.tar.gz
2.解压下载的包到 local目录下。
tar xvf mysql-5.7.27-aarch64.tar.gz -C /user/local
3.为了方便寻找和编辑,建议重命名刚刚解压的文件夹。
mv /usr/local/mysql-5.7.27-aarch64 /usr/local/mysql
4.创建mysql组和用户,把mysql用户加入到mysql组。
groupadd mysql && useradd -r -g mysql mysql
5.更改组合用户的权限
chown -R mysql:mysql /usr/local/mysql
6.切换到 mysql 下的 bin 目录 ,安装和初始化MySQL数据库,需执行如下命令。
./mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
报错:
./mysql_install_db: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
解决:
yum install -y libatomic
再次执行 mysql_install_db,报错:
./mysql_install_db: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./mysql_install_db)
./mysql_install_db: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./mysql_install_db)
分析原因:升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
将MySql对应的最新动态库复制到 /usr/lib64 下:
cp /usr/local/mysql/extra/libstdc++.so.6.0.24 /usr/lib64
修改系统默认动态库的指向。首先切换到 /usr/lib64 下,删除原来的软连接,将默认库的软连接指向最新动态库。
cd /usr/lib64
rm libstdc++.so.6
ln -s libstdc++.so.6.0.24 libstdc++.so.6
7.在mysql目录下拷贝mysql.server文件到 /etc/init.d/mysqld
cp -a ./support-files/mysql.server /etc/init.d/mysqld
8.配置mysql,编辑修改/etc/init.d/mysqld(修改basedir 和 datadir。wq退出保存即可。)
9.初始化MySQL,在 mysql/bin 下,执行命令:
./mysqld_safe --user=mysql &
注意:可能会出现如下问题
2021-12-24T02:22:42.353008Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
解决方式是直接创建缺少的文件并赋予写入权限即可
mkdir /var/log/mariadb/
touch /var/log/mariadb/mariadb.log
chmod 666 /var/log/mariadb/mariadb.log
10.启动mysql
/etc/init.d/mysqld restart
11.设置开机自启动
chkconfig --level 35 mysqld on
12.查看一下自动生成的密码
cat /root/.mysql_secret
13.登录mysql
/usr/local/mysql/bin/mysql -uroot -p`cat /root/.mysql_secret` -h127.0.0.1
14.修改root密码
SET PASSWORD FOR root@localhost = '123456';
flush privileges;
15.添加远程访问。首先在SQL中输入:use mysql;再设置远程访问命令:update user set host = '%' where user = 'root'; 使用 select host, user from user;查看状态,可以看到root有个% 通配符表示OK了。
重启MySQL
/etc/init.d/mysqld restart