背景
MySQL是常用数据库,Windows安装比较容易,笔者也有记录。现在国产化系统银河麒麟中安装,不同的是软件安装包不容易下载。一是安装的方式,再一个是MySQL本身的版本,网上很多文档说明其实都是对的,但是为什么那么多都不一样呢?就是MySQL本身的版本差异比较大,这些差异笔者也不是很清楚,但是不要用8和5.7的差异非常大,8即使安装的很顺利,在使用过程也会很多坑,导致我宁愿卸载8,也要重新安装5.7。这里就不过多说题外话。
下载
MySQL官网只有8以上才有ARM版,也就是5.7的ARM版安装包在官网是下载不到的,华为源里面有提供,笔者下载的是5.7.27。
https://repo.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/database/
安装
先卸载主机中已有的老版本MySQL
systemctl status mysqld
查看是否已有MySQL服务,如果有就先停掉,否则卸载了MySQL但是之前服务启动的pid文件还在,后面就会有错误。
rpm -qa|grep mysql
查看MySQL安装文件,把列表所有的安装包都删除掉
rpm -e --nodeps xxx
确保查询后没有MySQL安装包
whereis mysql
find / -name mysql
查看MySQL相关文件和文件夹
rm -rf xxx
删除上述查找到所有MySQL相关文件
rpm -ivh mysql-5.7.27-1.el7.aarch64.rpm
安装MySQL安装包
配置文件
有的版本rpm安装完成后在/etc下面会生成my.cnf配置文件,但是此版本安装后没有生成,那么我们就自己创建一个,在/etc创建my.cnf文件。
安装后会MySQL安装目录为/usr/local/mysql,根据安装目录我们在配置文件中相关路径会配置在这个位置
新创建的文件需要给权限才能编辑和使用,我们一般要编辑文件就给777权限,但是这里的配置文件不能直接给777,否则在运行时会有错误,此配置文件不能给这么高的操作权限,我们可以给644
chmod 644 /etc/my.cnf
编辑配置文件
[mysql]
default-character-set=utf8
[client]
socket = /usr/local/mysql/data/mysql.sock
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
max_connections=200
# MySQL安装路径
basedir = /usr/local/mysql
# MySQL文件存储路径
datadir = /usr/local/mysql/data
# 日志文件路径
log-error = /usr/local/mysql/data/mysqld.log
# MySQL pid文件路径
pid-file = /usr/local/mysql/data/mysql.pid
# MySQL socket文件路径
socket = /usr/local/mysql/data/mysql.sock
#忽略大小写
lower_case_table_names=1
启动
进入/usr/local/mysql/bin/,执行./mysqld --initialize --console,初始化MySQL的基础数据,会创建配置文件中datadir对应的路径文件夹,并在文件夹中生成相关数据。
cd /usr/local/mysql/bin/
./mysqld --initialize --console
这里生成了 /usr/local/mysql/data文件夹,但是这个文件夹还没有权限,在启动MySQL时会生成pid等文件,如果没有权限就不能创建会有错误,这里需要给这个文件夹权限
chown -R mysql.mysql /usr/local/mysql/data/
执行命令启动MySQL
service mysql start
# 启动MySQL
service mysql start
# 查看MySQL状态
service mysql status
# 停止MySQL
service mysql stop
重启主机,查看MySQL状态是启动的,说明MySQL服务器自己配置了开机启动。
密码修改
上述安装完成后只是安装好了MySQL,但是想要登录使用时会不知道密码,在安装时有个默认密码,我需要修改成自己的密码。默认查看初始密码的路径是/var/log/mysqld.log文件,但是上述配置文件是我们自己创建的,里面的日志文件是自己配置的没有采用默认值,所以这里查看初始密码的文件在/usr/local/mysql/data/mysql.log文件。
grep 'temporary password' /usr/local/mysql/data/mysqld.log
把初始密码复制出来,使用MySQL命令登录MySQL,登录进去操作时发现提示:You must reset your password using ALTER USER statement before executing this statement,这个提示说我们要修改MySQL的密码才能使用。
alter USER 'root'@'localhost' IDENTIFIED BY 'root';
执行上述命令修改root的密码为root。
重启MySQL服务
再使用root密码登录,可以正常使用,密码修改成功。
查看编码格式
上述步骤中初始化MySQL数据时会根据配置文件设置编码格式,我们一般都用utf8,按照上述配置文件生成的就是utf8,如果不是建议重新安装,因为我也不会修改,而且即使修改了,已经存在的数据可能会变成乱码数据。
执行以下命令查看编码格式,对应结果如图就是对的。
show variables like '%character%';
show variables like 'collation%';
设置允许远程连接
MySQL安装后默认是只允许本地连接,远程想通过ip连接会有错误,我们在这里可以修改为允许远程连接。
执行SQL,查看内容
//切换到MySQL数据库
use mysql;
//在user表内查询host和user2列
select host,user from user;
可以看到user=root的host=localhost,说明root用户只能在本地登录,我们修改host为%通配符,表示所有地方都可以连接。
执行SQL
update user set host='%' where user='root';
重启MySQL,外部设备可以连接MySQL。
MySQL命令
上述安装完成后可以在/usr/local/mysql/bin中使用mysql命令,其它位置使用mysql会提示找不到该命令。这是因为在Linux中使用命令,默认是在/usr/bin中找,如果没有就提示没有该命令,我们在安装mysql时路径不在该路径下所以不能在任意位置使用mysql。
为了能在任意路径使用mysql,我们可以创建一个软链接,将/usr/local/mysql/bin/mysql链接在/usr/bin中。执行以下命令就可以创建这个连接,然后任意路径就可以使用。
ln -s /usr/local/mysql/bin/mysql /usr/bin/