> 技术文档 > 国产麒麟V10系统ARM版离线无网络安装MySql(亲测可行)_麒麟系统离线安装mysql

国产麒麟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删除即可。


总结

        最终终于可以用了,以上就是今天分享的内容,希望能对大家有所帮助。