Shell 脚本之 MySQL 一键安装及基本配置(几分钟搞定)
准备工作
MySQL 该版本下载地址:
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
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
来执行脚本才可以。
使用修改后的密码登录测试
Navicat 连接测试
后续还会继续更新其他应用一键安装脚本,欢迎关注我哦!!!
Shell 脚本之 MySQL 一键安装及基本配置(几分钟搞定)的更多相关文章
- 使用 shell 脚本实现 LANMP 一键安装
使用 shell 脚本来实现 LANMP 系统的一键安装.使用的操作系统是 CentOS 6 ,不区分 32 位和 64 位,要求机器可以连通互联网.支持 LAMP 和 LNMP ,MySQL 支持 ...
- centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课
centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/ind ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...
- shell脚本操作mysql数据库
shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql -hhostname -Pport -uusername -pp ...
- shell脚本操作mysql库
shell脚本操作mysql数据库-e参数执行各种sql(指定到处编码--default-character-set=utf8 -s,去掉第一行的字段名称信息-N) 2011-05-11 18:18: ...
- shell脚本修复MySQL主从同步
发布:thebaby 来源:net [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改mysql主从同步的shell脚本. 例子 ...
- shell脚本获取mysql插入数据自增长id的值
shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...
- Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间
Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...
- CENTOS --5分钟搞定Nginx安装的教程
1. 安装gcc(centos 7之后一般已自带,可以在第6步失败后再安装) yum install gcc gcc-c++ 2. 安装pcre yum install -y pcre pcre-de ...
随机推荐
- 面试官问我:如何在 Python 中解析和修改 XML
摘要:我们经常需要解析用不同语言编写的数据.Python提供了许多库来解析或拆分用其他语言编写的数据.在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML. 本文分享 ...
- 1. 回顾Servlet
回顾Servlet 创建web工程 servlet-api:http://dwz.date/aTGa 编写Servlet import javax.servlet.ServletException; ...
- 多实例gpu_MIG技术快速提高AI生产率
多实例gpu_MIG技术快速提高AI生产率 Ride the Fast Lane to AI Productivity with Multi-Instance GPUs 一.平台介绍 NVIDIA安培 ...
- ARMed解决方案对DSP的战争
ARMed解决方案对DSP的战争 ARM体系结构简化了数字信号处理 ARM与数字信号处理(DSP)有什么关系? ARM似乎在处理领域处于领先地位.该处理器已将其视为其最大的细分市场之一,这主要是由于该 ...
- Android系统编程入门系列之应用环境及开发环境介绍
作为移动端操作系统,目前最新的Android 11.0已经发展的比较完善了,现在也到了系统的整理一番的时间,接下来的系列文章将以Android开发者为中心,争取用归纳总结的态度对初级入门者所应 ...
- LeetCode:322. 零钱兑换
链接:https://leetcode-cn.com/problems/coin-change/ 标签:动态规划.完全背包问题.广度优先搜索 题目 给定不同面额的硬币 coins 和一个总金额 amo ...
- 【VBA】最大行,最大列
最大行: Range("B" & Cells.Rows.Count).End(xlUp).Row 最大列 colu = Range("XFD2").En ...
- 生成树协议(STP)
一.交换网络环路的产生 1.广播风暴的形成 2.多帧复制 3.MAC地址表紊乱 二.STP简介 STP-Spanning Tree Protocol(生成树协议) 逻辑上断开环路,防止广播风暴的产生 ...
- OO unit4 summary
Unit4 一.第四单元作业的架构设计 第四单元个人认为主要是考察对于层次结构的理解,即如何理解并处理好UML图的树状结构组织,在理好层次之间以及层次内部的相互关系之后,就只剩下代码实现的问题了.但是 ...
- 微信获取信息发生错误(两个access_token的区别),错误代码:40001,说明:invalid credential, access_token is invalid or not latest hints
微信有两个access_token,一个是基础access_token,一个是网页授权access_token. 想要获取不带unionid的用户信息(以下链接)使用基础access_token ht ...