记一次华为鲲鹏系列服务器(aarch64内核)的CentOS 7.6安装MySQL 5.7的完整过程

时间:2024-03-11 18:33:30

先查看操作系统版本号以及内核,执行命令:

uname -a

cat /etc/redhat-release

此时可看到内核版本为aarch64,操作系统版本号为CentOS 7.6,然后去下载所对应的MySQL rpm安装包,本次安装使用的是mysql-5.7.27-1.el7.aarch64.rpm5.7版本的mysql有依赖包,所以先进行依赖包安装检查:

yum list installed|grep libaio

yum list installed|grep numact

如果已经安装,则会返回具体的版本号,反之则无信息返回,那就需要手动进行安装,先使用yum Install命令进行安装即可,如果服务器在局域网无法连通外网,则可以手动在阿里云的yum源网页中下载:http://mirrors.aliyun.com/centos/

确保依赖包已经安装后,则可以安装数据库:

rpm -ihv mysql-5.7.27-1.el7.aarch64.rpm

 

rpm安装包部署会新增mysql用户,此时执行命令可以查:

cat /etc/passwd

 

安装完毕后,此时可根据自己的实际需求修改数据库配置文件/etc/my.cnf,如修改启动端口等,以下是my.cnf文件的默认配置:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

 

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

 

#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

 

本次安装仅为验证安装可行性,并无任何业务要求,因此不对默认配置进行修改,但实际安装时,个人建议一定要先查看服务器的存储空间分布,把数据路径放到最大的磁盘下。

df -h

 

本次安装的服务器,最大磁盘是/目录,而my.cnf默认数据路径datadir=/var/lib/mysql,因此无需特意修改。

配置完配置文件后,需对数据库进行初始化,切勿马上启动数据库,否则可能会引起一些不必要的问题。执行初始化命令,把日志输出到指定文件,方便初始化后查看root用户的初始化密码,或者出问题时查看报错:

/usr/local/mysql/bin/mysqld --initialize --user=mysql > /home/initialize.log 2>&1

cat /home/initialize.log

 

日志中显示了初始化密码,表示初始化成功,此时可执行命令启动数据库:

systemctl start mysql

结果发现报错:

 

报错提示命令See "systemctl status mysql.service" and "journalctl -xe" for details.,查看报错细节,但是执行systemctl status mysql.service或者journalctl -xe,如果返回结果有的行文字较多,会对行进行缩减,所以此时我们执行命令:

systemctl status mysql -l

可查看完整的报错:

 

从报错中可以看到,因为默认配置中的log-error=/var/log/mariadb/mariadb.log文件不存在,所以启动失败,此时去创建该日志文件,注意要把拥有者修改为mysql用户:

 

 

 

然后再次启动数据库,就可以正常启动了

 

查看进程:

ps -ef|grep mysql

此时会发现数据库进程的启动用户为mysql,这是因为初始化时加了--user=mysql参数

 

启动完成后,就可以登录数据库:

mysql -uroot -p

此时发现又报错了

系统无法找到mysql的命令,这是因为没有配置环境变量引起的,需修改环境变量配置文件:

vi /etc/profile

在最后一行加上参数:

export PATH=$PATH:/usr/local/mysql/bin

然后执行命令使配置马上生效:

source /etc/profile

然后重新执行登录数据库命令,命令已经可以正常执行,输入密码后,结果又报错了:

 

mysql -uroot -p的登录命令,默认的sock文件是/tmp/mysql.sock,但是配置文件中默认的却是socket=/var/lib/mysql/mysql.sock所以此时无法正常登录,需指定正确的sock文件才可以:

mysql -uroot -p -S /var/lib/mysql/mysql.sock

此时终于可以正常登陆了:

 

记得root的密码在初始化数据库时的日志文件中查看:

 

本以为可以正常登录进去就完事了,结果执行查看数据库的命令时,又报错了,一看是没认真看报错,还以为自己命令打错了,结果细看才发现真正的错误:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

原来必须修改root用户的密码才能对数据库进行操作,登录进去数据库修改root用户密码,不同版本的修改命令不一样,我也没记住,个人习惯了使用mysqladmin命令来修改root用户的密码,所以先执行exit命令退出登录数据库,然后执行命令修改root用户的密码:

 mysqladmin -uroot -pnCAtg0wM<&o? password "newpassword"

结果又报错了:

 

是因为初始化密码中有特殊字符,所以不能明文写到修改命令中,需去掉密码:

 

结果还是报错,此时报错是sock文件不存在的报错,需指定sock文件,再次执行终于成功了:

 

 

 然后使用新密码登录数据库再次执行命令验证:

终于可以正常执行命令!!

本以为采坑到此结束,结果在服务器端执行命令没有问题,在个人电脑使用工具连接数据库是却无法连接:

此时回到服务器端执行命令查看mysql数据库下的user表里面的信息:

 

发现root用户的hostlocalhost,所以才无法远程登录

 

此时执行命令修改host%

update user set host=\'%\' where user=\'root\';

 

然后重启数据库

 

再重新使用工具连接数据库,终于可以连接成功: