先查看操作系统版本号以及内核,执行命令:
uname -a
cat /etc/redhat-release
此时可看到内核版本为aarch64,操作系统版本号为CentOS 7.6,然后去下载所对应的MySQL 的rpm安装包,本次安装使用的是mysql-5.7.27-1.el7.aarch64.rpm,5.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用户的host为localhost,所以才无法远程登录
此时执行命令修改host为%
update user set host=\'%\' where user=\'root\';
然后重启数据库
再重新使用工具连接数据库,终于可以连接成功: