系统:centos7
mysql版本:mysql-8.0.22-linux-glibc2.12-x86_64.tar.gz
脚本1:mysql_setup1.sh -- 实现mysql安装及初始化
#!/bin/bashecho "install mysql"#mysql安装包mysql_src="mysql-8.0.22-linux-glibc2.12-x86_64.tar.gz"#mysql安装目录target_path="/data"if [ ! -d $target_path ];then mkdir -p $target_path fitar -zxvf $mysql_src -C $target_pathmv $target_path/mysql-8.0.22-linux-glibc2.12-x86_64 $target_path/mysqlecho "----creat /etc/my.cnf----"#生成my.cnf文件cat>>my.cnf<<EOF[client]port=3306socket = /var/log/mysql/mysql.sock[mysqld]basedir=$target_path/mysqldatadir=$target_path/mysql/datasocket=/var/log/mysql/mysql.socklog-error=/var/log/mysql/mysqld.logpid-file=/var/log/mysql/mysqld.pidlower-case-table-names=1log-bin=mysql-bin auto_increment_increment=1 auto_increment_offset=1 character-set-server=utf8EOF#将生成后的my.cnf文件覆盖/etc/my.cnf`\cp -f my.cnf /etc/my.cnf``rm -rf my.cnf`#创建/var/log/mysql/mysqld.log和/var/log/mysql/mysqld.pid文件,并修改权限if [ ! -d "/var/log/mysql" ]; then mkdir -p /var/log/mysqlfiecho " " >> /var/log/mysql/mysqld.logecho " " >> /var/log/mysql/mysqld.pidchmod -R 777 /var/log/mysql#创建mysql用户组及用户echo "----creat mysql group and user----"egrep "^mysql" /etc/group >& /dev/nullif [ $? -ne 0 ]then groupadd mysqlfiid mysql >& /dev/nullif [ $? -ne 0 ]then useradd -r -g mysql mysqlfi#加入开机启动echo "----Add boot----"`\cp -f $target_path/mysql/support-files/mysql.server /etc/init.d/mysql`#修改/etc/init.d/mysql文件(查找替换"basedir="和"datadir="两行(46/47)内容)basedir=$target_path/mysqldatadir=$target_path/mysql/datased -i "46c basedir=$basedir" /etc/init.d/mysqlsed -i "47c datadir=$datadir" /etc/init.d/mysqlchmod 777 /etc/init.d/mysqlchkconfig --add mysql#mysql初始化,初始化后生成初始密码echo "----mysql initialization----"$target_path/mysql/bin/mysqld --initialize --user=mysql --initialize --lower-case-table-names=1 --basedir=$target_path/mysql --datadir=$target_path/mysql/data --lc_messages_dir=$target_path/mysql/share --lc_messages=en_USif [ $? -ne 0 ] then echo "----ERROR!!!----"else #获取初始密码sleep 5spasswd_line=`sed -n "/.*A temporary password is generated/p" /var/log/mysql/mysqld.log`echo "$passwd_line" >> sqlpwd.logsql_pwd=`sed 's/.*A temporary password is generated for root@[^:]*: \(.*\)/\1/' sqlpwd.log`echo "mysql initial password: $sql_pwd"rm -rf sqlpwd.log#将初始密码写入/etc/my.cnf [client]配置中(位于文件第2行),后面实现免密登录#在第2行后面添加user和password配置sed -i "2a user = root\npassword = $sql_pwd" /etc/my.cnf#添加到环境变量echo "----Configure environment variables----"if [ -f /etc/profile ]; then `echo "export MYSQL_HOME=$target_path/mysql" >> /etc/profile` `echo 'export PATH=$PATH:$MYSQL_HOME/bin' >> /etc/profile` `source /etc/profile`fi#启动mysqlecho "----start mysql----"service mysql restartecho "----ok----"fi
安装脚本2:mysql_setup2.sh -- 实现密码修改
#!/bin/bashecho "----set passwd----"target_path="/data"#将mysql密码修改为:mysql123!sqlpasswd="mysql123!"$target_path/mysql/bin/mysql --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$sqlpasswd' PASSWORD EXPIRE NEVER;"if [ $? -ne 0 ] then echo "ERROR"else #修改/etc/my.cnf中的密码(密码位于第4行)sed -i "4c password = mysql123!" /etc/my.cnf#sed -n "4p" /etc/my.cnf$target_path/mysql/bin/mysql -e "use mysql;ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$sqlpasswd';update user set host = '%' where user='root';FLUSH PRIVILEGES;show databases;"#sed -i '4d' /etc/my.cnf #删除配置文件中的密码echo "mysql install success"fi
如果本文对你有帮助,欢迎 关注、点赞、分享、推荐~
点关注,一起成长!