因为贪图便宜,也因为开始选服务器时不懂,没注意,新买的linux服务器选了个arm架构的cpu然后系统也自然而然只能选唯一的arm架构的centos7.9 。因为这个失误,让我在arm架构的linux上安装mysql尝尽了苦头。
先总结记录如下:
1、下载mysql tar.gz 安装包
安装包下载链接:MySQL Community Downloads , centos7的只能选择redhed系统下的安装包。而且我的阿里云系统是arm版本的,还智能选择arm系列安装包。
将下载的文件上传到linux中的一个目录,我这里是上传到了mnt目录,因为我的mnt目录是挂载了数据盘的, 我想要尽量保持系统盘不被安装的软件占用太多空间。安装的时候我也会解压到这个目录去安装。
2、检测环境
CentOS是自带mariadb, 和mysql的安装相冲突 , 所以需要提前删除
rpm -qa | grep mariadb //查找
yum remove mariadb-libs-5.5.68-1.el7.aarch64
rpm -qa | grep mariadb //再次查找,验证是否删除
3、解压mysql文件
在mnt创建一个目录,然后将mysql压缩包解压到这个目录。如果用命令创建目录可能还涉及到赋权,我这里直接用sftp手工创建的,默认就是755权限。
mkdir /mnt/mysqlarm5.7.4
cd mnt
tar -xvf mysql-8.0.31-1.el7.aarch64.rpm-bundle.tar -C mysqlarm5.7.4
4、安装
cd mysqlarm5.7.4
由于rpm方式下载对依赖关系有所要求, 所以下载时要严格根据以下顺序安装
rpm -ivh mysql-community-common-8.0.31-1.el7.aarch64.rpm
rpm -ivh mysql-community-client-plugins-8.0.31-1.el7.aarch64.rpm
rpm -ivh mysql-community-libs-8.0.31-1.el7.aarch64.rpm
rpm -ivh mysql-community-client-8.0.31-1.el7.aarch64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.31-1.el7.aarch64.rpm
rpm -ivh mysql-community-server-8.0.31-1.el7.aarch64.rpm
最后一个安装出现了libaio.so.1()(64bit) 被 mysql-community-server-8.0.31-1.el7.aarch64 需要
执行yum install libaio
然后再次执行rpm -ivh mysql-community-server-8.0.31-1.el7.aarch64.rpm
5、初始化和配置mysql
初始化:mysqld --initialize --user=mysql
启动mysql:service mysqld start
查看初始密码:tail -20 /var/log/mysqld.log
下面红色框的是密码 ,复制密码出来先放到一个文本框比如我的密码是 if5<ukFtRaiL
登录mysql(密码中有特殊字符的,用转义字符表示)
mysql -uroot -p
修改密码
alter user 'root'@'localhost' identified by '密码';
6、测试远程登录
先确保您的服务器所在安全组打开了3306端口,打开方法自行百度。
然后用mysql工具测试远程登录
转到mysql 库
use mysql;
查询当前用户可登录的客户端情况:从mysql 库的user表查询
select user,password from user;
我的提示没有passowrd列 , 因为mysql8.0以上没有这个列。
所以我 select user,authentication_string,host from user;
执行脚本更新root的host字段,记得第二行也要执行,否则不能刷新。
update user set host = '%' where user ='root';
flush privileges;
7、修改mysql所在数据库文件的目录位置
因为我系统盘不大,不想数据库文件存放在系统盘,所以需要改数据库目录。先创建目录
mkdir /mnt/mysql8data
我又偷懒用了sftp手工创建的。
在更改MySQL的数据目录前,必须关闭MySQL服务。
service mysql status
service mysql stop
mysqladmin -u root -p shutdown #停止进程需要输入密码
进入etc目录,查看mysql的cnf配置文件,我的是etc/my.cnf
用命令vim my.cnf 查看编辑,
也可以用sftp工具直接下载下来修改再上传,我用了后者,简单明了。
数据目录在 /var/lib/mysql ,拷贝到 /mnt/mysql8data 。
执行cp命令 cp -a /var/lib/mysql /mnt/mysql8data
修改my.cnf 配置,然后my.cnf文件上传到etc。
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
datadir=/mnt/mysql8data/mysql
socket=/mnt/mysql8data/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8
socket=/mnt/mysql8data/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/mnt/mysql8data/mysql/mysql.sock
重新启动MySQL服务
systemctl start mysqld.service
验证数据目录是否修改成功
mysql -hlocalhost -uroot -p
输入密码
show variables like '%datadir%';
测试远程连接,我使用的是Navicat工具