国产麒麟V10系统ARM版离线无网络安装MySql(亲测可行)_麒麟系统离线安装mysql
目录
前言
一、准备工作
1、查看Linux内核版本和系统架构信息
2、查看位数
3、下载安装包
二、安装MySql
1.解压并移动到指定位置
2.创建mysql用户和用户组(可选)
3.配置MySql
4.配置环境变量并验证
三、配置启动systemctl mysqld服务
1.初始化数据库
2.将mysql sever添加到系统服务
四、连接mysql cli
总结
前言
由于工作需要,最近需要将一个项目的后台服务迁移部署到国产麒麟V10操作系统(ARM版)的服务器上,因此需要安装MySql数据库服务,由于没有网络,安装起来踩了不少坑,以下作为记录,便于之后再次安装的时候复习,有同样需求的小伙伴也可以作为参考~~~
一、准备工作
1、查看Linux内核版本和系统架构信息
[root@localhost ~]# uname -a
2、查看位数
getconf LONG_BIT
3、下载安装包
由于没有网络环境且没安装rpm命令,无法用命令行等方式在线下载安装的方式,因此下载编译好的安装包,选择适合ARM架构的版本,下载地址:https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.tar.gz
二、安装MySql
1.解压并移动到指定位置
tar -xvf mysql-5.7.27-aarch64.tar.gz
2.创建mysql用户和用户组(可选)
可以创建专门的用户组和用户来设置其对数据库的权限,保证安全性。
groupadd mysqluseradd -r -g mysql mysql
3.配置MySql
(1)创建数据和日志目录
mkdir -p /usr/local/mysql/datachown -R mysql:mysql /usr/local/mysql/datamkdir -p /usr/local/mysql/logschown -R mysql:mysql /usr/local/mysql/logs
(2)复制默认文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
可以在mysql服务初始化initialize时指定默认配置文件,如未指定则按照如下顺序读取默认配置文件:/etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf、~/.my.cnf,因此将默认配置文件修改后移动到上述文件位置均可。
(3)编辑配置文件:
[mysqld]datadir=/usr/local/mysql/databasedir=/usr/local/mysqlsocket=/usr/local/mysql/data/mysql.sockuser=mysqlport=3306character-set-server=utf8symbolic-links=0[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid[client]port=3306socket=/usr/local/mysql/data/mysql.sock
4.配置环境变量并验证
可将mysql配置到环境变量中:
# MYSQL_HOMEexport MYSQL_HOME=/opt/module/mysqlexport PATH=$PATH:$MYSQL_HOME/bin
环境变量配置文件包括:
验证mysql是否安装成功,如果能正常显示版本信息证明mysql可用:
mysql -V
但在麒麟V10(ARM版)上直接使用/bin/mysql命令时报错error while loading shared libraries: libncurses.so.5: cannot open shared object file,意思是找不到 libncurses.so.5 这个文件,解决方法:
(1)先执行命令查找库所在地址:
find / -name \'libncurses*\'
(2)创建软链接:
sudo ln -s /xxxx/xxxx/libncurses.so.6.4 /xxxx/xxxx/libncurses.so.5
(3)再次执行mysql命令会发现还少一个库:
sudo ln -s /xxxx/xxxx/libtinfo.so.6 /xxxx/xxxx/libtinfo.so.5
这下执行mysql命令就不会报错了。
三、配置启动systemctl mysqld服务
1.初始化数据库
执行初始化操作:
(1)使用--defaults-file指定配置文件;
(2)--basedir=
: 指定MySQL安装目录的路径;
(3)--datadir=
: 指定数据目录的路径,这是存放数据库文件的地方;
(4)--user={user_name | user_id}
: 指定运行mysqld服务器的用户名或用户ID。
除了上述参数,还有一系列参数,除了第一项其余在配置文件my.cnf中配置。
mysqld --initialize --defaults-file=/etc/my.cnf
2.将mysql sever添加到系统服务
直接启动服务:
/usr/local/mysql/support-files/mysql.server start
复制服务脚本到/etc/init.d并修改其权限
cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld
设置mysql服务开机启动:
systemctl enable mysqld
将mysqld添加到服务中:
chkconfig --add mysqld
启动服务:
systemctl start mysqld或者service mysqld start
如果这样操作后启动mysqld服务systemctl mysqld start报错:Failed to start mysql.service: Unit not found则表示缺失系统服务文件,创建服务文件:
vim /usr/lib/systemd/system/mysqld.service #根据实际情况编辑服务地址
填入以下内容:
[Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target[Install]WantedBy=multi-user.target[Service]User=mysql #可不填,根据实际情况填写Group=mysql #可不填,根据实际情况填写Type=notify #可不填,根据实际情况填写# Disable service start and stop timeout logic of systemd for mysqld service.TimeoutSec=0# Execute pre and post scripts as rootPermissionsStartOnly=true# Start main serviceExecStart=/usr/local/mysql/bin/mysqld $MYSQLD_OPTS# Use this to switch malloc implementationEnvironmentFile=-/etc/sysconfig/mysql# Sets open_files_limitLimitNOFILE = 10000Restart=on-failureRestartPreventExitStatus=1# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.Environment=MYSQLD_PARENT_PID=1PrivateTmp=false
重新加载 systemd 配置使其生效:
systemctl daemon-reload
再次启动服务查看服务状态为active就是正常启动了,如果服务单元文件存在,但仍然无法启动,查看日志根据报错信息检查 MySQL 的配置文件,确保配置文件中没有错误。
四、连接mysql cli
登录Mysql:
mysql -u root -p
在MySQL初始化(initialize)完成后会自动为MySQL的root用户生成一个随机初始化密码,并在MySQL的errorlog文件中记录下来,我们要找到它并用它登录MySQL,修改root用户密码后才能执行任何其它操作。
找不到密码解决方法:
(1)修改配置文件my.cnf,添加下列语句:
skip-grant-tables # 跳过授权表
(2)修改配置文件后重启mysql:
systemctl restart mysqld
(3)这时登录mysql不需要密码:
mysql -u root -p
(4)修改root密码:
ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'new_password\';
(5)修改后刷新授权表:
flush privileges;
(6)再把配置文件中的skip-grant-tables删除即可。
总结
最终终于可以用了,以上就是今天分享的内容,希望能对大家有所帮助。