shell脚本初始化mysql

这里mysql的安装方式是解压缩包的形式

#!/bin/bash
user=root
host=localhost
port=23306

source /etc/profile
mkdir -p /mnt/data/mysqldb

tar -zxvf ./software-package/sql.tgz -C ${MYHOME}

#create user
groupadd mysql
#密码加密
pass=$(perl -e 'print crypt($ARGV[0], "password")' "mysql_QWE123")
useradd -g mysql mysql -p ${pass}

# 授权
chmod -R 777 /mnt/data/mysqldb
#chown -R [用户]:[所属组] 目录
chown -R mysql:mysql /mnt/data/mysqldb

newpasswd='root_mysql&QWE'
mysqld --initialize --console --user=mysql
passwd=$(gawk '/root@localhost: /{print $13}' /mnt/data/mysqldb/mysqldb.log)
echo ${passwd}

systemctl start mysql.service
systemctl enable mysql.service

#sql文件夹存放sql语句,是从旧的mysql用Navicat导出整个数据库
if [ -d "./sql/" ];then
  echo "sql文件夹存在"
  cd ./sql
else
  echo "sql文件夹不存在"
fi


# 非交互改密码
mysql -u root -p$passwd --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$newpasswd';"
mysql -uroot -p${newpasswd} << EOF
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
EOF

# 判断文件是否插入过,在sql文件头插入建数据库操作
first=$(sed -n '1p;1q' my1.sql)
echo "$first"
if [[ "$first" =~ "CREATE" ]]
then
	echo "以修改过my1这张表"
else
	echo "未修改过my1这张表,执行插入"
	sed -i "1iCREATE database if NOT EXISTS \`my1\` default character set utf8mb4 collate utf8mb4_general_ci;" my1.sql 
	sed -i "2iuse my1;" my1.sql 
	sed -i "3iset names utf8mb4;" my1.sql 
	echo "插入完成"
fi

# 免登录直接在命令行导入sql文件
mysql --user=$user --password=$newpasswd --host=$host -P$port --default-character-set=utf8 -f < my1.sql
echo 'my1 done'

 

mysql安装包形式安装

离线安装rpm出现依赖问题

在离线安装出现依赖问题时,可在联网环境下(本地虚拟机即可)用

yum install -y 软件名 --downloadonly --downloaddir=./保存路径

保存下载的这些包,直接在生产环境中离线安装即可
在下载的所有文件中执行

rpm -Uvh --force --nodeps *.rpm

#!/bin/bash

# 获取脚本当前位置
export MYHOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
var=$(rpm -qa | grep mysql)
echo "$var"
rpm -e --nodeps $var

var=$(rpm -qa | grep mariadb)
echo "$var"
rpm -e --nodeps $var

rpm -ivh ${MYHOME}/files/mysql/mysql-community-common-*.rpm
rpm -ivh ${MYHOME}/files/mysql/mysql-community-libs-*.rpm
rpm -ivh ${MYHOME}/files/mysql/mysql-community-client-*.rpm
rpm -ivh ${MYHOME}/files/mysql/mysql-community-server-*.rpm

#rpm -ivh ${MYHOME}/files/mysql/mysql-community-libs-compat-*.rpm
rpm -ivh ${MYHOME}/files/mysql/libxml2-*.rpm
rpm -ivh ${MYHOME}/files/mysql/libxslt-*.rpm

#echo 'validate_password=off' >> /etc/my.cnf
#echo 'lower_case_table_names=1' >> /etc/my.cnf
systemctl enable mysqld
systemctl start mysqld

newpasswd=1qaz@WSX
passwd=$(gawk '/root@localhost:/{print $11}' /var/log/mysqld.log)
echo ${passwd}
expect mysql-init ${passwd} ${newpasswd}

mysql -uroot -p${newpasswd} << EOF
grant all privileges on *.* to 'root'@'%' identified by '${newpasswd}' with grant option;
flush privileges;
EOF
#systemctl restart mysqld


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是编译安装MySQLshell脚本: ```bash #!/bin/bash # 安装依赖 yum -y install gcc-c++ cmake ncurses-devel # 下载 MySQL 源码包并解压 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.25.tar.gz tar -zxvf mysql-8.0.25.tar.gz # 创建 MySQL 数据存储目录并授权 mkdir -p /data/mysql chmod 777 /data/mysql # 进入 MySQL 源码目录并进行编译安装 cd mysql-8.0.25 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DWITH_BOOST=boost \ -DWITH_SYSTEMD=1 \ -DSYSTEMD_PID_DIR=/var/run/mysqld \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DWITH_ROCKSDB=1 \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci make && make install # 初始化 MySQL 数据库 cd /usr/local/mysql ./bin/mysqld --initialize --user=mysql --datadir=/data/mysql # 创建 MySQL systemd 配置文件 cat > /usr/lib/systemd/system/mysqld.service <<EOF [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target [Service] Type=forking PIDFile=/var/run/mysqld/mysqld.pid ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS ExecReload=/bin/kill -s HUP $MAINPID Restart=on-failure RestartPreventExitStatus=1 User=mysql Group=mysql [Install] WantedBy=multi-user.target EOF # 启动 MySQL 服务并设置开机自启动 systemctl start mysqld systemctl enable mysqld ``` 注意:在使用该脚本之前,请确保已经安装了依赖,如gcc-c++、cmake、ncurses-devel等。此外,该脚本仅适用于CentOS或RedHat系列的Linux系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值