电力行业,linux服务器基本不给root权限,安全加固或者整改都会要求禁用root,所以一般应用的安装应该尽量使用非root用户来部署mysql数据库
我的大致步骤就是下载官方mysql对应generic的安装包解压,然后进入解压目录,基于当前目录创建初始化脚本,配置my.cnf文件,执行初始化建库,登录root改密。脚本如下:
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
xz -c -d mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz |tar xf -
cd mysql-8.0.27-linux-glibc2.12-x86_64
# 清理重建数据 日志 临时目录
rm -rf ./data/* ./logs/* ./tmp/*
mkdir data logs tmp
# 创建配置文件my.cnf
cat <<EOF>my.cnf
[mysqld]
port=3306
basedir=$(pwd)
datadir=$(pwd)/data
socket=$(pwd)/mysql.sock
[client]
socket=$(pwd)/mysql.sock
[mysql]
socket=$(pwd)/mysql.sock
[mysqladmin]
socket=$(pwd)/mysql.sock
[mysqldump]
socket=$(pwd)/mysql.sock
EOF
ln -f $(pwd)/my.cnf ~/.my.cnf
# 创建启动脚本
cat <<EOF>start.sh
#!/bin/bash
base=$(pwd)
source ~/.bashrc
cd \${base}
nohup ./bin/mysqld_safe --defaults-file=\${base}/my.cnf --user=eapp --basedir=\${base} --datadir=\${base}/data --log-error=\${base}/logs/err.log --socket=\${base}/mysql.sock 2>&1 &
EOF
# 创建停止脚本
cat <<EOF>stop.sh
#!/bin/bash
base=$(pwd)
source ~/.bashrc
cd \${base}
./bin/mysqladmin -uroot -p shutdown
EOF
# 授权脚本可执行权限
chmod 0777 start.sh stop.sh
# 初始化建库 -I 参数是创建随机密码,注意观察终端数据。也可以替换成 --initialize-insecure 这样就不会创建随机密码。
./bin/mysqld --defaults-file=$(pwd)/my.cnf --initialize-insecure --console --tmpdir=$(pwd)/tmp --pid-file=$(pwd)/mysql.pid --socket=$(pwd)/mysql.sock
# 启动数据库
./start.sh
# 登录数据库并修改密码为123456,如果用的-I参数初始化,则需要加上-p输入终端打印的随机密码。这里加上sleep 3 是为了防止上面库还没启动就执行登录操作了,会提示登录失败
sleep 3
./bin/mysql -uroot <<EOF
show databases;
alter user user() identified by '123456';
EOF
# 登录测试
./bin/mysql -uroot -p123456 <<EOF
select 1;
EOF
# 停止数据库
./stop.sh