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