Centos7中安装mysql5.7.21

1.mysql5.7.1下载:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.27-linux-glibc2.12-x86_64.tar
将下载的包放在/tmp目录下

2.进入/tmp,将mysql-5.7.27-linux-glibc2.12-x86_64.tar解压到/usr目录下

 tar zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar -C /usr
 #解压后,生成/usr/mysql-5.7.27-linux-glibc2.12-x86_64,并重命名
 mv /usr/mysql-5.7.27-linux-glibc2.12-x86_64 /usr/mysql

3.创建mysql用户组及用户(非必须步骤)

groupadd mysql
useradd -r -g mysql mysql

4.配置环境变量

vim /etc/profile  #添加以下内容
export MYSQL_HOME=/usr/mysql
export PATH=$PATH:$MYSQL_HOME/bin
#保存,并执行
source /etc/profile

5.配置mysql文件

#删除/etc/my.cnf,并新建一个
vim /etc/my.cnf #添加以下配置
[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/mysql
datadir=/usr/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql/mysqld.log 
pid-file=/var/log/mysql/mysqld.pid  

lower_case_table_names = 1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
default-time_zone = '+8:00'

注意:配置好后,需要先把/var/log/mysql/mysqld.log 和 /var/log/mysql/mysqld.pid两个文件创建好(可以写入个空格),并修改权限

echo "  " >> /var/log/mysql/mysqld.log
echo "  " >> /var/log/mysql/mysqld.pid
chmod -R 777 /var/log/mysql

6.初始化数据

/usr/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data --lc_messages_dir=/data/mysql/share --lc_messages=en_US

初始化后,在/var/log/mysql/mysqld.log中获取初始密码(密码在最后一行,如果没有,请注意是否有报错信息)

7.加入开机启动

#将/usr/mysql/support-files/mysql.server文件复制到/etc/init.d/mysql
`\cp -f /usr/mysql/support-files/mysql.server /etc/init.d/mysql`
#修改/etc/init.d/mysql文件("basedir="和"datadir="两行(46/47)内容)
basedir=/usr/mysql
datadir=/usr/mysql/data
chmod 777 /etc/init.d/mysql
chkconfig --add mysql

8.启动mysql,/usr/mysql/bin目录下执行:

./mysqld_safe --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock --user=root &
#或者使用
systemctl start mysql

进入mysql:
用初始密码进入mysql

mysql -uroot -p
初始密码

重置密码:

mysql> set password=password('123456');

更改访问权限:

更改访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' with grant option;
Flush privileges;

创建数据库:
create database mydb_test;

导入sql数据表文件:/tmp/db_test.sql,退出mysql,执行下面命令

mysql -uroot -p123456 mydb_test < /tmp/db_test.sql
安装脚本:

sql_setup1.sh

#!/bin/bash

echo "install mysql"

#mysql安装包
mysql_src="mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz"

#mysql安装目录
mysql_target="/usr"

if [ ! -d $mysql_target ];then 
mkdir -p $mysql_target 
fi

tar -zxvf $mysql_src -C $mysql_target
mv $mysql_target/mysql-5.7.27-linux-glibc2.12-x86_64 $mysql_target/mysql

echo "----creat /etc/my.cnf----"
#生成my.cnf文件
`echo " " >> my.cnf`
`echo "[client]" >> my.cnf`
`echo "port = 3306" >> my.cnf`
`echo "socket = /tmp/mysql.sock" >> my.cnf`
`echo " " >> my.cnf`
`echo "[mysqld]" >> my.cnf`
`echo "character_set_server=utf8" >> my.cnf`
`echo "init_connect='SET NAMES utf8'" >> my.cnf`
`echo "basedir=$mysql_target/mysql" >> my.cnf`
`echo "datadir=$mysql_target/mysql/data" >> my.cnf`
`echo "socket=/tmp/mysql.sock" >> my.cnf`
`echo "log-error=/var/log/mysql/mysqld.log" >> my.cnf`
`echo "pid-file=/var/log/mysql/mysqld.pid" >> my.cnf`
`echo " " >> my.cnf`
`echo "lower_case_table_names = 1" >> my.cnf`
`echo "sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
" >> my.cnf`
`echo "max_connections=5000" >> my.cnf`
`echo "default-time_zone = '+8:00' " >> my.cnf`

#将生成后的my.cnf文件覆盖/etc/my.cnf(注意,此文件不能设置777权限)
`\cp -f my.cnf /etc/my.cnf`
`rm -rf my.cnf`

#创建/var/log/mysql/mysqld.log和/var/log/mysql/mysqld.pid文件,并修改权限
#注意这两个文件不能直接放到/var/log路径下,经测试此路径权限修改后,重启会失效
if [ ! -d "/var/log/mysql" ]; then
  mkdir -p /var/log/mysql
fi
echo " " >> /var/log/mysql/mysqld.log
echo " " >> /var/log/mysql/mysqld.pid
chmod -R 777 /var/log/mysql

#创建mysql用户组及用户
echo "----creat mysql group and user----"
#如果mysql用户组不存在,就创建mysql用户组
egrep "^mysql" /etc/group >& /dev/null
if [ $? -ne 0 ]
then
    groupadd mysql
fi

#如果mysql用户不存在,就创建mysql用户
id mysql >& /dev/null
if [ $? -ne 0 ]
then
    useradd -r -g mysql mysql
fi


#添加到环境变量,有时候发现写入到/etc/profile中,重启shell窗口后,不生效,保险起见,可以在/etc/bashrc中写入一份
echo "----Configure environment variables----"
#if [ -f /etc/bashrc ]; then 
#	`echo "export MYSQL_HOME=$mysql_target/mysql" >> /etc/bashrc`
#	`echo 'export PATH=$PATH:$MYSQL_HOME/bin' >> /etc/bashrc`
#	`source /etc/bashrc`
#fi

if [ -f /etc/profile ]; then 
	`echo "export MYSQL_HOME=$mysql_target/mysql" >> /etc/profile`
	`echo 'export PATH=$PATH:$MYSQL_HOME/bin' >> /etc/profile`
	`source /etc/profile`
fi

#加入开机启动
`\cp -f $mysql_target/mysql/support-files/mysql.server /etc/init.d/mysql`
#修改/etc/init.d/mysql文件(查找替换"basedir="和"datadir="两行(46/47)内容)
basedir=$mysql_target/mysql
datadir=$mysql_target/mysql/data
sed -i "46c basedir=$basedir" /etc/init.d/mysql 
#这里直接替换了46行的内容,也可以通过查找替换的方式,具体参见sed用法
sed -i "47c datadir=$datadir" /etc/init.d/mysql
chmod 777 /etc/init.d/mysql
chkconfig --add mysql #已加入到开机启动
#可以使用systemctl start/stop mysql启动和关闭mysql服务

#mysql初始化,初始化后生成初始密码
echo "----mysql initialization----"
$mysql_target/mysql/bin/mysqld --initialize --user=mysql --basedir=$mysql_target/mysql --datadir=$mysql_target/mysql/data --lc_messages_dir=$mysql_target/mysql/share --lc_messages=en_US

if [ $? -ne 0 ] 
then 
echo "----ERROR!!!----"
else 
#获取初始密码
sleep 5s #等待5s
passwd_line=`sed -n "/.*A temporary password is generated/p" /var/log/mysql/mysqld.log` #获取到密码所在的行
echo "$passwd_line" >> sqlpwd.log  
sql_pwd=`sed 's/.*A temporary password is generated for root@[^:]*: \(.*\)/\1/' sqlpwd.log`
#将提取到的密码直接替换该行内容,这样sql_pwd中就只是密码字符串了,此操作没有修改sqlpwd.log内容,如果想直接修改,可以使用:sed -i 's/.*A temporary password is generated for root@[^:]*: \(.*\)/\1/' sqlpwd.log
echo "mysql初始密码为: $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

#启动mysql
echo "----start mysql----"
#$mysql_target/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock --user=root >/dev/null &
#上面命令可以启动mysql,也可使用下面简单方法
systemctl start mysql
fi

sql_setup2.sh

#!/bin/bash

echo "----set passwd----"
mysql_target="/usr"
#将mysql密码修改为:123456
$mysql_target/mysql/bin/mysql --connect-expired-password -e "set password=password('123456')"
#此操作可实现不用进入mysql交互模式进行操作
if [ $? -ne 0 ] 
then 
echo "----ERROR!!!----"
else 
#修改/etc/my.cnf中的密码(密码位于第4行),将新修改的密码保存到配置文件中,后面实现免输入账号密码登录
sed -i "4c password=123456" /etc/my.cnf
#sed -n "4p" /etc/my.cnf #显示修改后的密码
$mysql_target/mysql/bin/mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' with grant option;Flush privileges"

echo "----create database mydb_test----"
#创建数据库,并查询是否存在刚才新创建的数据库
$mysql_target/mysql/bin/mysql -e "create database mydb_test;show databases;" 

echo "----import mydb_test data----" 
#导入备份的数据库文件,文件位置位于/tmp/db_test.sql
$mysql_target/mysql/bin/mysql mydb_test < /tmp/db_test.sql
#导入数据后,查看库中表,确认是否导入成功
$mysql_target/mysql/bin/mysql mydb_test  -e "show tables;"

echo "mysql install success"
fi
注意:以上两部分代码需先后手动执行才能生效,放一起执行时不知道为什么第二部分代码不生效,原因暂时未知。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jepson2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值