OpenEuler安装mysql二进制版本
一、实验说明
1.1 实验背景
由于centos停止维护,计划使用OpenEuler进行替代。虽然两者非常相似,但是OpenEuler在包括内核版本、预装包等方面仍有不少差异,尤其是原本redhat系的rpm包很多都已无法使用。
相对于原本的rpm包安装mariadb方案,现在使用mysql社区版的二进制版本。虽然安装复杂一些,也有一些优势,例如升级平滑、无需依赖包。
本文内容由官网文档:https://dev.mysql.com/doc/refman/8.0/en/整理。
1.2 实验环境
操作系统:OpenEuler-22.03
mysql版本:Linux - Generic,8.0.43,glibc2.28-x86_64
tips: 事实上OpenEuler-22.03的glibc版本为2.34,与二进制包并不完全相同,不过不影响使用
二、安装
2.1 下载二进制文件
在官网下载mysql社区版(https://dev.mysql.com/downloads/mysql/)二进制版本,文件为mysql-8.0.43-linux-glibc2.28-x86_64.tar.xz,下载完成后移动至/usr/local目录下
2.2 创建用户及组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
2.3 解压文件
cd /usr/local
tar xf /usr/local/mysql-8.0.43-linux-glibc2.28-x86_64.tar.xz
ln -s /usr/local/mysql-8.0.43-linux-glibc2.28-x86_64 mysql
cd mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
2.4 设置环境变量
tee /etc/profile.d/mysql.sh <<EOL
export MYSQL_HOME=/usr/local/mysql
export PATH=\$PATH:\$MYSQL_HOME/bin
EOL
使环境变量立即生效
source /etc/profile
设置好环境变量后,即可直接使用mysql的一系列命令
2.5 创建配置文件
tee /etc/my.cnf <<EOL
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF
max_connections = 512
character-set-server = utf8mb4
EOL
chown root:root /etc/my.cnf
chmod 644 /etc/my.cnf
2.6 初始化数据库
cd /usr/local/mysql
mkdir data
chmod 755 data
chown -R mysql:mysql /usr/local/mysql/
mysqld --defaults-file=/etc/my.cnf --initialize
初始化后,查看/usr/local/mysql/data/localhost.localdomain.err文件,其中会生成临时的初始root密码(temporary password)
2.7 配置服务
tee /usr/lib/systemd/system/mysqld.service <<EOL
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=notify
TimeoutSec=0
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE=10000
LimitNPROC=10000
Restart=on-failure
RestartPreventExitStatus=1
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
EOL
配置为服务后,即可使用systemctl控制mysql的启停
chmod 644 mysqld.service
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld
如一切正常,此时使用ss -nlpt
命令可以看到tcp 3306端口为监听状态
2.8 重置密码
使用初始root密码连接数据库mysql -uroot -p'初始root密码'
此时会发现,无法对数据库进行操作,必须修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
至此,即可正常操作mysql数据库了