还是电力行业,linux服务器一般不放开root权限,安全加固或者整改都会要求禁用root,应尽量使用非root用户来部署mysql数据库。
大致步骤就是下载官方mysql对应generic的安装包解压,然后进入解压目录,基于当前目录创建初始化脚本,配置my.cnf文件,执行初始化建库,登录并改密为123456(脚本中自定义)。
前提:需要提前用root权限安装好libaio ncurses-compat-libs 这两个依赖库。这是mysql官方要求的。
yum install libaio ncurses-compat-libs
这个一键安装命令理论上也可以用于centos8 centos9 ubuntu20.04 ubuntu22.04等linux发行版
wget https://cdn.mysql.com//Downloads/MySQL-9.2/mysql-9.2.0-linux-glibc2.17-x86_64.tar.xz
tar Jxf mysql-9.2.0-linux-glibc2.17-x86_64.tar.xz
cd mysql-9.2.0-linux-glibc2.17-x86_64
cat >init.sh<<'END'
#!/bin/bash
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=${USER} --basedir=\${base} --datadir=\${base}/data --log-error=\${base}/logs/err.log --socket=\${base}/mysql.sock 2>&1 >>mysql.log&
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 这样就不会创建随机密码。
printf "\n初始化中...\n\n"
./bin/mysqld --defaults-file=$(pwd)/my.cnf --log-error-verbosity=1 --initialize-insecure --console --tmpdir=$(pwd)/tmp --pid-file=$(pwd)/mysql.pid --socket=$(pwd)/mysql.sock 2>&1 >>/dev/null
# 启动数据库
printf "\n启动测试中...\n\n"
./start.sh
# 登录数据库并修改密码为123456,如果用的-I参数初始化,则需要加上-p输入终端打印的随机密码。这里加上sleep 5 是为了防止上面库还没启动就执行登录操作了,会提示登录失败
sleep 5
./bin/mysql -uroot <<EOF
alter user user() identified by '123456';
EOF
# 登录测试
printf "\n登录测试中...\n\n"
./bin/mysql -uroot -p123456 -e 'select version();' 2>/dev/null
# 停止数据库
printf '\n停止中...\n\n'
./bin/mysqladmin -uroot -p123456 shutdown 2>/dev/null
printf "\n\n\n初始化完成,启动脚本:start.sh,停止脚本 stop.sh,重新初始化脚本init.sh(会清空数据),默认root密码 123456\n"
END
sh ./init.sh
4670

被折叠的 条评论
为什么被折叠?



