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


Mysql5.6新特性: 1.优化器的改进:主要体现在索引条件pushdown以及多范围的读取数据,可降低过载。2,InnoDB的改进:MySQL InnoDB 存储引擎团队主要提供了 NoSQL 的访问接口,可通过Memcached的 API 直接访问 InnoDB 的表。3,更好的复制:改进数据完整性和高可用性及性能方面大大提升。
安装环境, 一台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/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/binexport PATH# Check if user is rootif [ $(id -u) != “0” ]; then echo “Error: You must be root to run this script, please use root to install” exit 1ficlearecho “=========================================================================”echo “A tool to auto-compile & install MySQL 5.6.25 on Redhat/CentOS Linux “echo “=========================================================================”cur_dir=$(pwd)#set mysql root passwordecho “===========================”mysqlrootpwd=”MANAGER”echo -e “Please input the root password of mysql:”read -p “(Default password: MANAGER):” mysqlrootpwdif [ “$mysqlrootpwd” = “” ]; thenmysqlrootpwd=”MANAGER”fiecho “===========================”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):” isinstallmysql56case “$isinstallmysql56” iny|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” exitesacget_char(){SAVEDSTTY=`stty -g`stty -echostty cbreak#dd if=/dev/tty bs=1 count=1 2> /dev/nullstty -rawstty echostty $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/issueuname -aMemTotal=`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 programrpm -qa|grep mysqlrpm -e mysql#yum -y remove mysql-server mysql mysql-libs#yum -y remove php-mysql#yum -y install yum-fastestmirror#yum -y update#Disable SeLinuxif [ -s /etc/selinux/config ]; thensed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/configfi setenforce 0}#Installation of depend on and optimization options.function InstallDependsAndOpt(){cd $cur_dircat >>/etc/security/limits.conf
* soft nproc 65535* hard nproc 65535* soft nofile 65535* hard nofile 65535EOFecho “fs.file-max=65535” >> /etc/sysctl.conf}#Install MySQLfunction InstallMySQL56(){echo “============================Install MySQL 5.6.22==================================”cd $cur_dir#Backup old my.cnf#rm -f /etc/my.cnfif [ -s /etc/my.cnf ]; then mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bakfi#mysql directory configurationgroupadd mysql -g 512useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysqltar xvf /root/mysql-5.6.25-linux-glibc2.5-x86_64.tar.gzmv /root/mysql-5.6.25-linux-glibc2.5-x86_64 /usr/local/mysqlmkdir -p /data/mysqlmkdir -p /log/mysqlchown -R mysql:mysql /data/mysqlchown -R mysql:mysql /usr/local/mysqlchown -R mysql:mysql /log#edit /etc/my.cnfSERVERID=`ifconfig eth0 | grep “inet addr” | awk ‘{ print $2}’| awk -F. ‘{ print $3$4}’`cat >>/etc/my.cnf
[client]port= 3306socket= /tmp/mysql.sockdefault-character-set=utf8[mysql]default-character-set=utf8[mysqld]port= 3306socket= /tmp/mysql.sockbasedir= /usr/local/mysqldatadir= /data/mysqlopen_files_limit = 3072back_log = 103max_connections = 800max_connect_errors = 100000table_open_cache = 512external-locking = FALSEmax_allowed_packet = 32Msort_buffer_size = 2Mjoin_buffer_size = 2Mthread_cache_size = 51query_cache_size = 32Mtmp_table_size = 96Mmax_heap_table_size = 96Mslow_query_log = 1slow_query_log_file = /log/mysql/slow.loglog-error = /log/mysql/error.loglong_query_time = 1server-id = $SERVERIDlog-bin = mysql-binsync_binlog = 1binlog_cache_size = 4Mmax_binlog_cache_size = 4096Mmax_binlog_size = 1024Mexpire_logs_days = 60key_buffer_size = 32Mread_buffer_size = 1Mread_rnd_buffer_size = 16Mbulk_insert_buffer_size = 64Mcharacter-set-server=utf8default-storage-engine = InnoDBbinlog_format = rowinnodb_buffer_pool_dump_at_shutdown = 1innodb_buffer_pool_load_at_startup = 1binlog_rows_query_log_events = 1explicit_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 = 0transaction_isolation = REPEATABLE-READinnodb_additional_mem_pool_size = 16Minnodb_buffer_pool_size = 512M#innodb_data_home_dir =innodb_data_file_path = ibdata1:1024M:autoextendinnodb_flush_log_at_trx_commit = 1innodb_log_buffer_size = 16Minnodb_log_file_size = 512Minnodb_log_files_in_group = 2innodb_max_dirty_pages_pct = 50innodb_file_per_table = 1innodb_locks_unsafe_for_binlog = 0wait_timeout = 14400interactive_timeout = 14400skip-name-resolve[mysqldump]quickmax_allowed_packet = 32MEOF/usr/local/mysql/scripts/mysql_install_db –basedir=/usr/local/mysql –datadir=/data/mysql –defaults-file=/etc/my.cnf –user=mysqlcp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchmod 700 /etc/init.d/mysqldchkconfig –add mysqldchkconfig –level 2345 mysqld oncat >> /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/local/mysql/libEOFldconfigif [ -d “/proc/vz” ];thenulimit -s unlimitedfi/etc/init.d/mysqld startcat >> /etc/profile
export PATH=$PATH:/usr/local/mysql/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/libEOFsource /etc/profile/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwdcat > /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
#rm -f /tmp/mysql_sec_script/etc/init.d/mysqld restartecho “============================MySQL 5.6.25 install completed=========================”}function CheckInstall(){echo “===================================== Check install ===================================”clearismysql=””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.”fiif [ “$ismysql” = “ok” ]; thenecho “Install MySQL 5.6.25 completed! enjoy it.”echo “=========================================================================”netstat -ntlelseecho “Sorry,Failed to install MySQL!”echo “You can tail /root/mysql-install.log from your server.”fi}#The installation logInitInstall 2>&1 | tee /root/mysql-install.logCheckAndDownloadFiles 2>&1 | tee -a /root/mysql-install.logInstallDependsAndOpt 2>&1 | tee -a /root/mysql-install.logInstallMySQL56 2>&1 | tee -a /root/mysql-install.logCheckInstall 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’);GRANTALLPRIVILEGESON*.*TO’root’@’%’IDENTIFIEDBY’123456’WITHGRANTOPTION;flushprivileges;若以上方法不好使则:use mysql;UPDATE user SETPassword=PASSWORD(‘123456′) where USER=’root’;flushprivileges;

相关推荐: 分割SQL文件

小生博客:http://xsb开发云主机域名oke.blog.51cto.comSQL备份需要导入到Mysql,但是SQL文件太大怎么办?推荐一个shell脚本:mysqldumpsplitter相关推荐: MySQL 5.7 忘记密码。[root@MySQL…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 06/04 17:53
Next 06/04 17:53

相关推荐