千家信息网

自动化安装Mysql5.6-脚本实现

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Mysql5.6新特性: 1.优化器的改进:主要体现在索引条件pushdown以及多范围的读取数据,可降低过载。2,InnoDB的改进:MySQL InnoDB 存储引擎团队主要提供了 NoSQL 的
千家信息网最后更新 2026年10月31日自动化安装Mysql5.6-脚本实现

Mysql5.6新特性: 1.优化器的改进:主要体现在索引条件pushdown以及多范围的读取数据,可降低过载。

2,InnoDB的改进:MySQL InnoDB 存储引擎团队主要提供了 NoSQL 的访问接口,可通过 Memcached 的 API 直接访问 InnoDB 的表。

3,更好的复制:改进数据完整性和高可用性及性能方面大大提升。


  1. 安装环境, 一台Centos6.5 推荐二进制安装。 本文已经经过测试,作为生产库来说没有问题。每个公司需求不同可以稍稍改动,本文使用的是mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz

如版本不同可以更改脚本的109 和110行替换mysql安装包名称。

2.开始安装,安装时把安装包放在root和脚本放在root下即可。


脚本如下:

[root@centos4 ~]# cat install-mysql.sh

###### 二进制自动安装数据库脚本root密码MANAGER将脚本和安装包放在/root目录即可###############

######数据库目录/usr/local/mysql############

######数据目录/data/mysql############

######日志目录/log/mysql############

######端口号默认3306其余参数按需自行修改############

##################

#author:zhangbin

##################

#!/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.25 on Redhat/CentOS Linux "

echo "========================================================================="

cur_dir=$(pwd)

#set mysql root password

echo "==========================="

mysqlrootpwd="MANAGER"

echo -e "Please input the root password of mysql:"

read -p "(Default password: MANAGER):" mysqlrootpwd

if [ "$mysqlrootpwd" = "" ]; then

mysqlrootpwd="MANAGER"

fi

echo "==========================="

echo "MySQL root password:$mysqlrootpwd"

echo "==========================="

#which MySQL Version do you want to install?

echo "==========================="

isinstallmysql56="n"

echo "Install MySQL 5.6.25,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.25"

isinstallmysql56="y"

;;

*)

echo "INPUT error,You will exit install MySQL 5.6.25"

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<

* 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.25-linux-glibc2.5-x86_64.tar.gz

mv /root/mysql-5.6.25-linux-glibc2.5-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<

[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<

/usr/local/mysql/lib

EOF

ldconfig

if [ -d "/proc/vz" ];then

ulimit -s unlimited

fi

/etc/init.d/mysqld start

cat >> /etc/profile <

export PATH=$PATH:/usr/local/mysql/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib

EOF

source /etc/profile

/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd

cat > /tmp/mysql_sec_script<

use mysql;

delete from mysql.user where user!='root' or host!='localhost';

grant all privileges on *.* to 'sys_admin'@'%' identified by 'MANAGER';

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.25 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.25 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



3.执行完毕输入:

[root@centos4 ~]# source /etc/profile

启动:

[root@centos4 ~]# /etc/init.d/mysqld start


4.解决无法远程连接数据库的出现1045 access denied for user 'root'@localhhost' using password yes


5.在mysql中执行

在mysql命令行中执行

SET PASSWORD FOR'root'@'localhost' = PASSWORD('123456');

GRANT ALL PRIVILEGES ON *.* TO 'root' @'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

flush privileges;

若以上方法不好使则:

use mysql;

UPDATE user SETPassword=PASSWORD('123456') where USER='root';

flush privileges;


数据 脚本 目录 数据库 不同 二进制 不好 公司 参数 口号 可用性 名称 命令 团队 完整性 密码 引擎 性能 接口 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会毛军 科技创新与互联网经济 互联网核心科技是什么 互联网品科技 互联网络科技有限公司 互联网科技集团 期待互联网科技 润盈互联网科技 互联网金融 科技创新 长亮科技 互联网金融 互联网科技股有哪些 甘肃拓世互联网科技有限公司 受益于互联网科技的高速发展 武汉健翔互联网络科技有限公司 洛阳共同富裕互联网科技有限公司 长沙茂晟互联网科技有限公司 美国互联网科技公司 陕西九四连强互联网科技有限公司 互联网科技和医药行业 互联网企业和网络科技有限公司 远拓互联网科技 科技大学互联网专业好不好 现代科技和互联网有关系吗 昊天互联网科技有限公司 图游互联网科技 上海乐五互联网科技有限公司 抖集互联网科技技术咨询 版纳互联网科技选哪家 平安好医生打造互联网科技医疗 互联网大会出现的黑科技
0