Mysql5.6 自動化部署
主機環境:Centos6.5
前提:
1. 配置yum源
2. 移除系統自帶的mysql
3. 刪除原先的mysql使用者
4. 使用mysql二進位制安裝包:https://dev.mysql.com/downloads/file/?id=473278
[root@mysql ~]# ls -lrt
-rw-r--r-- 1 root root 328739574 Nov 11 00:40 mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz
-rw-r--r-- 1 root root 7302 Nov 11 00:41 mysql_auto_install.sh
-rw-r--r-- 1 root root 866364 Nov 11 00:46 mysql-install.log
mysql_install.sh:注意替換軟體包版本
[root@mysql ~]# cat mysql_auto_install.sh
###### 二進位制自動安裝資料庫指令碼root密碼mysqld將指令碼和安裝包放在/root目錄即可###############
######資料庫目錄/usr/local/mysql############
######資料目錄/data/mysql############
######日誌目錄/log/mysql############
######埠號預設3306其餘引數按需自行修改############
##################
#author:rrhelei@126.com#
##################
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/bin
export PATH
# Check if user is root
if [ $(id -u) != "0" ]; then
echo "Error: You must be root to run this script, please use root to install"
exit 1
fi
clear
echo "========================================================================="
echo "A tool to auto-compile & install MySQL 5.6.38 on Redhat/CentOS Linux "
echo "========================================================================="
cur_dir=$(pwd)
#set mysql root password
echo "==========================="
mysqlrootpwd="mysqld"
echo -e "Please input the root password of mysql:"
read -p "(Default password: mysqld):" mysqlrootpwd
if [ "$mysqlrootpwd" = "" ]; then
mysqlrootpwd="mysqld"
fi
echo "==========================="
echo "MySQL root password:$mysqlrootpwd"
echo "==========================="
#which MySQL Version do you want to install?
echo "==========================="
isinstallmysql56="n"
echo "Install MySQL 5.6.38,Please input y"
read -p "(Please input y , n):" isinstallmysql56
case "$isinstallmysql56" in
y|Y|Yes|YES|yes|yES|yEs|YeS|yeS)
echo "You will install MySQL 5.6.38"
isinstallmysql56="y"
;;
*)
echo "INPUT error,You will exit install MySQL 5.6.38"
isinstallmysql56="n"
exit
esac
get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty cbreak
#dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}
echo ""
echo "Press any key to start...or Press Ctrl+c to cancel"
char=`get_char`
# Initialize the installation related content.
function InitInstall()
{
cat /etc/issue
uname -a
MemTotal=`free -m | grep Mem | awk '{print $2}'`
echo -e "\n Memory is: ${MemTotal} MB "
#Set timezone
#rm -rf /etc/localtime
#ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#Delete Old Mysql program
rpm -qa|grep mysql
rpm -e mysql
#yum -y remove mysql-server mysql mysql-libs
#yum -y remove php-mysql
#yum -y install yum-fastestmirror
#yum -y update
#Disable SeLinux
if [ -s /etc/selinux/config ]; then
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
fi
setenforce 0
}
#Installation of depend on and optimization options.
function InstallDependsAndOpt()
{
cd $cur_dir
cat >>/etc/security/limits.conf<<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF
echo "fs.file-max=65535" >> /etc/sysctl.conf
}
#Install MySQL
function InstallMySQL56()
{
echo "============================Install MySQL 5.6.22=================================="
cd $cur_dir
#Backup old my.cnf
#rm -f /etc/my.cnf
if [ -s /etc/my.cnf ]; then
mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak
fi
#mysql directory configuration
groupadd mysql -g 512
useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql
tar xvf /root/mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz
mv /root/mysql-5.6.38-linux-glibc2.12-x86_64 /usr/local/mysql
mkdir -p /data/mysql
mkdir -p /log/mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /log
#edit /etc/my.cnf
SERVERID=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}'| awk -F. '{ print $3$4}'`
cat >>/etc/my.cnf<<EOF
[client]
port= 3306
socket= /tmp/mysql.sock
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
port= 3306
socket= /tmp/mysql.sock
basedir= /usr/local/mysql
datadir= /data/mysql
open_files_limit = 3072
back_log = 103
max_connections = 800
max_connect_errors = 100000
table_open_cache = 512
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 51
query_cache_size = 32M
tmp_table_size = 96M
max_heap_table_size = 96M
slow_query_log = 1
slow_query_log_file = /log/mysql/slow.log
log-error = /log/mysql/error.log
long_query_time = 1
server-id = $SERVERID
log-bin = mysql-bin
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 4096M
max_binlog_size = 1024M
expire_logs_days = 60
key_buffer_size = 32M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
character-set-server=utf8
default-storage-engine = InnoDB
binlog_format = row
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_load_at_startup = 1
binlog_rows_query_log_events = 1
explicit_defaults_for_timestamp = 1
#log_slave_updates=1
#gtid_mode=on
#enforce_gtid_consistency=1
#innodb_write_io_threads = 8
#innodb_read_io_threads = 8
#innodb_thread_concurrency = 0
transaction_isolation = REPEATABLE-READ
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 512M
#innodb_data_home_dir =
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 16M
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_max_dirty_pages_pct = 50
innodb_file_per_table = 1
innodb_locks_unsafe_for_binlog = 0
wait_timeout = 14400
interactive_timeout = 14400
skip-name-resolve
[mysqldump]
quick
max_allowed_packet = 32M
EOF
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 2345 mysqld on
cat >> /etc/ld.so.conf.d/mysql-x86_64.conf<<EOF
/usr/local/mysql/lib
EOF
ldconfig
if [ -d "/proc/vz" ];then
ulimit -s unlimited
fi
/etc/init.d/mysqld start
cat >> /etc/profile <<EOF
export PATH=/usr/local/mysql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH
EOF
source /etc/profile
/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd
cat > /tmp/mysql_sec_script<<EOF
use mysql;
delete from mysql.user where user!='root' or host!='localhost';
grant all privileges on *.* to 'sys_admin'@'%' identified by 'mysqld';
flush privileges;
EOF
/usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script
#rm -f /tmp/mysql_sec_script
/etc/init.d/mysqld restart
echo "============================MySQL 5.6.38 install completed========================="
}
function CheckInstall()
{
echo "===================================== Check install ==================================="
clear
ismysql=""
echo "Checking..."
if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my.cnf ]; then
echo "MySQL: OK"
ismysql="ok"
else
echo "Error: /usr/local/mysql not found!!!MySQL install failed."
fi
if [ "$ismysql" = "ok" ]; then
echo "Install MySQL 5.6.38 completed! enjoy it."
echo "========================================================================="
netstat -ntl
else
echo "Sorry,Failed to install MySQL!"
echo "You can tail /root/mysql-install.log from your server."
fi
}
#The installation log
InitInstall 2>&1 | tee /root/mysql-install.log
CheckAndDownloadFiles 2>&1 | tee -a /root/mysql-install.log
InstallDependsAndOpt 2>&1 | tee -a /root/mysql-install.log
InstallMySQL56 2>&1 | tee -a /root/mysql-install.log
CheckInstall 2>&1 | tee -a /root/mysql-install.log
安裝過程:
[root@mysql ~]# sh mysql_auto_install.sh
=========================================================================
A tool to auto-compile & install MySQL 5.6.38 on Redhat/CentOS Linux
=========================================================================
===========================
Please input the root password of mysql:
(Default password: mysqld):
===========================
MySQL root password:mysqld
===========================
===========================
Install MySQL 5.6.38,Please input y
(Please input y , n):y
You will install MySQL 5.6.38
Press any key to start...or Press Ctrl+c to cancel
CentOS release 6.5 (Final)
Kernel \r on an \m
Linux mysql 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Memory is: 1862 MB
error: package mysql is not installed
setenforce: SELinux is disabled
mysql_auto_install.sh: line 243: CheckAndDownloadFiles: command not found
============================Install MySQL 5.6.22==================================
mysql-5.6.38-linux-glibc2.12-x86_64/share/polish/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/russian/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/german/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/spanish/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/italian/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/mysql_test_data_timezone.sql
mysql-5.6.38-linux-glibc2.12-x86_64/share/norwegian/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/slovak/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/serbian/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/dutch/errmsg.sys
mysql-5.6.38-linux-glibc2.12-x86_64/share/mysql_security_commands.sql
mysql-5.6.38-linux-glibc2.12-x86_64/share/dictionary.txt
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin1.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/Index.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin2.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/hp8.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin7.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/macroman.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/ascii.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/keybcs2.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/greek.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/hebrew.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/cp1257.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/swe7.xml
mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/cp866.xml
Installing MySQL system tables...2017-11-11 00:44:28 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
2017-11-11 00:44:28 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.38-log) starting as process 3016 ...
OK
Filling help tables...2017-11-11 00:45:25 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
2017-11-11 00:45:25 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.38-log) starting as process 3040 ...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h 192.168.48.50 password 'new-password'
Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd . ; /usr/local/mysql/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems at
The latest information about MySQL is available on the web at
Support MySQL by buying support/licenses at
New default config file was created as /usr/local/mysql/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings
WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server
Starting MySQL.. SUCCESS!
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
============================MySQL 5.6.38 install completed=========================
^C===================================== Check install ===================================
Checking...
MySQL: OK
Install MySQL 5.6.38 completed! enjoy it.
轉:https://blog.csdn.net/gumengkai/article/details/78502131
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2212975/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 生產庫自動化MySQL5.6安裝部署詳細教程MySql
- Beego 自動化部署Go
- .NET網站自動化部署網站
- vue自動化部署指令碼Vue指令碼
- vue 自動化部署 jenkins 篇VueJenkins
- Python自動化部署工具-FabricPython
- Docker 之 Jenkins自動化部署DockerJenkins
- 如何做Serverless自動化部署Server
- iOS自動化打包部署踩坑記iOS
- 陷入jenkins自動化部署的坑Jenkins
- [原] php + Laravel 實現部署自動化PHPLaravel
- 利用Github Actions實現自動化部署Github
- Docker 之 Spring Boot 自動化部署DockerSpring Boot
- 使用JulieOps管理Kafka自動化部署?Kafka
- devops系統自動化部署流程dev
- Linux下半自動化部署(svn +maven)LinuxMaven
- Robot Framework 自動化測試--部署篇Framework
- git利用post-receive自動化部署Git
- SpringBoot手動部署到Tomcat和自動化熱部署Spring BootTomcat熱部署
- GO 使用Webhook 實現github 自動化部署GoWebHookGithub
- 前端自動化部署方案探索(一):Docker篇前端Docker
- 使用Jenkins自動化部署Java專案JenkinsJava
- jenkins自動化專案部署實戰Jenkins
- GitLab + Jenkins + ACK 自動化部署方案GitlabJenkins
- Fastlane + Bugly自動化部署測試包AST
- Saltstack自動化操作記錄(1)-環境部署
- Swift Perfect服務端的自動化部署Swift服務端
- 使用mina自動化部署Rails應用AI
- 自動化運維工具SaltStack詳細部署運維
- 本地部署GPT全流程自動化檔案GPT
- 自動化簡化了移動傳輸網路的部署
- mysql5.6主主叢集自動同步指令碼MySql指令碼
- jenkins + GitHub 實現專案自動化部署JenkinsGithub
- 使用 Git 實現 專案的自動化部署Git
- Travis + github page 前端頁面自動化部署Github前端
- 基於Jenkins Pipeline自動化部署Jenkins
- 利用github提供的Webhooks實現自動化部署GithubWebHook
- Jenkins + Docker + ASP.NET Core自動化部署JenkinsDockerASP.NET