Shell 脚本之 MySQL 一键安装及基本配置(几分钟搞定)

摘要:
'fi#创建MYSQL户和户组groupaddmysqluseradd-gmysqlmysqlmkdir/usr/local/mysql/datachown-Rmysql:mysql/usr/local/mysqlecho'===================================='echo'Usercreatedsuccessfully!'echo'===================================='fi#创建/var/lib/mysql录,并修改权限mkdir/var/lib/mysqlchmod777/var/lib/mysql#开始安装MYSQLcd/usr/local/mysql./bin/mysqld--initialize--user=mysql--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data2˃&1|tee$log#获取root初始密码InitialPassword=`tail-1$log|awk'{print$NF}'`#复制启动脚本到资源录,并修改basedir和datadir为对应录cp./support-files/mysql.server/etc/init.d/mysqldsed-i'46s/basedir=/basedir=/usr/local/mysql/g'/etc/init.d/mysqldsed-i'47s/datadir=/datadir=/usr/local/mysql/data/g'/etc/init.d/mysqldif[$?'echo'===================================='fi#设置MYSQL系统服务并开启启chmod+x/etc/init.d/mysqldchkconfig--addmysqld#启动MYSQLDservicemysqldrestart#检查MySQL服务是否启动成功netstat-ntlp|grep3306if[$?'fi#将MYSQL的BIN录加PATH环境变量echo"exportPATH=$PATH:/usr/local/mysql/bin"˃˃~/.bash_profilesource~/.bash_profileif[$?'echo'===================================='fi#登陆MYSQL,并执行SQL语句mysql-uroot-p"$InitialPassword"--connect-expired-password/dev/nullif[$?
准备工作

MySQL 该版本下载地址:

https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

image-20210716111126345

mysql_install-v1.0.sh脚本如下:

#!/bin/bash

# MySQL 安装日志信息
log=/var/log/mysql_install.log
# MySQL压缩包路径
MySQLPath=/root/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
# sql 文件
sqlfile=/root/test.sql

# 卸载系统⾃带的MARIADB
rpm -qa|grep mariadb |xargs yum remove -y > /dev/null

# 解压MYSQL安装包
echo '===================================='
echo 'Unzip....'
tar -zxf $MySQLPath -C /usr/local/
mv /usr/local/mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/mysql
if [ $? -ne 0 ];then
echo 'MySQL unzip failed!!!'
exit
else
echo '===================================='
echo 'Unpack the success!'
fi

# 创建MYSQL⽤户和⽤户组
groupadd mysql
useradd -g mysql mysql
mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
echo '===================================='
echo 'User created successfully!'

# MYSQL的配置⽂件
cat > /etc/my.cnf << EOF
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
port = 3306
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
EOF
if [ $? -ne 0 ];then
echo 'Failed to write the my.cnf configuration file!!!'
exit
else
echo '===================================='
echo 'my.cnf configuration success!'
echo '===================================='
fi

# 创建 /var/lib/mysql ⽬录,并修改权限
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql

# 开始安装 MYSQL
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 2>&1 | tee $log

# 获取 root 初始密码
InitialPassword=`tail -1 $log |awk '{print $NF}'`

# 复制启动脚本到资源⽬录,并修改 basedir 和 datadir 为对应⽬录
cp ./support-files/mysql.server /etc/init.d/mysqld
sed -i '46s/basedir=/basedir=/usr/local/mysql/g' /etc/init.d/mysqld
sed -i '47s/datadir=/datadir=/usr/local/mysql/data/g' /etc/init.d/mysqld
if [ $? -ne 0 ];then
echo 'Failed to replace /etc/init.d/mysqld!!!'
exit
else
echo '===================================='
echo '/etc/init.d/mysqld successfully modified!'
echo '===================================='
fi

# 设置MYSQL系统服务并开启⾃启
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld

# 启动MYSQLD
service mysqld restart

# 检查 MySQL 服务是否启动成功
netstat -ntlp | grep 3306
if [ $? -ne 0 ];then
echo 'MySQL Boot failure!!!'
exit
else
echo '===================================='
echo 'start MySQL successfully!'
fi

# 将 MYSQL 的 BIN ⽬录加⼊ PATH 环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >> ~/.bash_profile
source ~/.bash_profile

if [ $? -ne 0 ];then
echo 'Variable write failed!!!'
exit
else
echo '===================================='
echo 'Variable write successful!'
echo '===================================='
fi

# 登陆MYSQL,并执行 SQL 语句
mysql -uroot -p"$InitialPassword" --connect-expired-password < $sqlfile 2> /dev/null

if [ $? -ne 0 ];then
echo 'fail to perform MySQL operation!!!'
exit
else
echo '===================================='
echo 'All operations were successful and can be connected through Navicat!!!'
echo '===================================='
fi

test.sql文件内容如下:

alter user user() identified by "123456";
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

第一、修改 root 密码;

第二、设置远程主机登录,可以通过Navicat来登录。

执行脚本

这里需要注意的是不要使用 ./mysql_install-v1.0.sh方式来执行,否则系统环境变量执行完脚本之后不生效;

需要使用source mysql_install-v1.0.sh来执行脚本才可以。

image-20210716112006040

使用修改后的密码登录测试

image-20210716112105269

Navicat 连接测试

Snipaste_2021-07-16_11-07-26

后续还会继续更新其他应用一键安装脚本,欢迎关注我哦!!!

免责声明:文章转载自《Shell 脚本之 MySQL 一键安装及基本配置(几分钟搞定)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JQuery的AJAXcentos 卸载删除 mysql (mariadb)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mysql常见的引擎

常用的引擎是:Innodb和Myiasm这两种引擎: innodb: 提供了对事务的ACID操作,还提供了行级锁和外键约束,,他的优势就是处理大量数据,在msql启动的时候,首先会建立一个缓存池,主要是缓存数据和索引,但是操作大规模的数据查找时很慢,所以建议当需要数据库的事务操作时,使用这个,还有就是在写的时候不会锁定全表,所以在大规模并发操作的时候会提高...

Navicat连接mysql8.0.1版本出现1251--Client does not support authentication protocol requested by server的解决

Navicat连接mysql8.0.1版本出现1251--Client does not support authentication protocol requested by server的解决 转载自:https://blog.csdn.net/XDMFC/article/details/80263215 好不容易安装好mysql,但又出现了mysq...

mycat 1.6.6.1安装以及配置docker 安装mysql 5.7.24 双主多从读写分离主主切换

mycat和mysql的高可用参考如下两个图    简介:应用程序仅需要连接HAproxy或者mycat,后端服务器的读写分离由mycat进行控制,后端服务器数据的同步由MySQL主从同步进行控制。 服务器主机规划 IP  功能 备注 192.168.0.200 Mysql Master1 Mysql Master1端口3306 192....

Mysql安装与主从配置

安装MySql 操作系统:Windows Server 2008 R2 Standard MySql版本:mysql-5.7.17-winx64 第一步:解压mysql-5.7.17-winx64.zip到指定位置 第二步:安装文件根目录下添加data文件夹,将my-default.ini重命名为my.ini 第三步:在命令提示符下依次输入如下命令:...

Sphinx速成指南

目录 1. Sphinx简介 1.1. 什么是全文检索 1.2. 介绍 1.3. Sphinx的特性 2. Sphinx安装(For MySQL) 2.1. Windows下安装 2.2. Linux下安装 3. 实例说明 4. Sphinx配置 5. 运行Sphinx 6. 搜索(翻译) 6.1. 匹配模式 6.2. 布尔查询语法(Boolean que...

mysql批量插入,批量更新

进行批量操作的时候,一定要事先判断数组非空 <insert id="batchInsert"parameterType="java.util.List"> insert into DATA (ID, TEXT, STAUTS) <foreach close=")"collection="list"item="item"index="i...