一、实验说明

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
skip-log-bin
EOL

其中datadir可以自行修改,例如改为数据盘挂载的目录
注意:mysql会默认开启binlog功能,如果不加上skip-log-bin配置,会不断产生binlog日志,天长日久会写满文件系统。

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 /etc/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数据库了

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐