MySQL学习第二篇:MySQL安装
1、按照前一篇文章准备好系统环境: http://blog.csdn.net/hwhmh2010/article/details/52664092
2、编辑安装脚本
[root@mysql ~]# vim myinstall.sh #!/bin/bash export WEBSITEPATH=http://downloads.mysql.com/archives/get/file/ # mysql download path export SOFTEDITION=mysql-5.6.25 # mysql download edition export SOFTSUFFIX=tar.gz #Compressed package suffix export SOFTFILEPATH=/root/soft/ # download mysql soft to this path export INSTALL_PATH=/usr/local/mysql # mysql install path export DEFAULT_CHARSET=utf8 export DEFAULT_COLLATION=utf8_general_ci export DATA_PATH=/data # mysql data path export TCP_PORT=3306 export SOCKET_PATH=/data/mysql.sock # socket file path export CNF_PATH=/usr/local/mysql/my.cnf # my.cnf path export SLOW_QUERY_LOG=/data/slow_query_log/ export LOG_BIN=/data/mysql_bin/ export IP=`ifconfig|grep "inet addr:"|grep -v "127.0.0.1"|cut -d: -f2|awk '{print $1}'` export SERVER_ID=${IP} | sed 's/\.//g' echo echo "***** Check the soft file path *****" echo if [ -d ${SOFTFILEPATH} ]; then echo $SOFTFILEPATH is exist, OK ! else echo ${SOFTFILEPATH} is not exist,creating... mkdir -p ${SOFTFILEPATH} && echo $SOFTFILEPATH is created OK ! fi echo echo "***** Check the install path *****" echo if [ -d ${INSTALL_PATH} ]; then echo ${INSTALL_PATH} is exist, OK ! else echo ${INSTALL_PATH} is not exist,creating... mkdir -p ${INSTALL_PATH} && echo ${INSTALL_PATH} is created OK ! fi echo echo "***** Check the data path *****" echo if [ -d ${DATA_PATH} ]; then echo ${DATA_PATH} is exist, OK ! else echo ${DATA_PATH} is not exist,creating... mkdir -p ${DATA_PATH} && echo ${DATA_PATH} is created OK ! fi echo echo "***** Check the SLOW_QUERY_LOG path *****" echo if [ -d ${SLOW_QUERY_LOG} ]; then echo ${SLOW_QUERY_LOG} is exist, OK ! else echo ${SLOW_QUERY_LOG} is not exist,creating... mkdir -p ${SLOW_QUERY_LOG} && echo ${SLOW_QUERY_LOG} is created OK ! fi echo echo "***** Check the LOG_BIN path *****" echo if [ -d ${LOG_BIN} ]; then echo ${LOG_BIN} is exist, OK ! else echo ${LOG_BIN} is not exist,creating... mkdir -p ${LOG_BIN} && echo ${LOG_BIN} is created OK ! fi echo echo "***** Check mysql user *****" echo grep mysql /etc/passwd &> /dev/null if [ $? == 0 ]; then echo "user: mysql is already exist" else # useradd -g mysql mysql echo "User:mysql is not exist,creating..." groupadd mysql && useradd -g mysql mysql -s /sbin/nologin && echo mysql is created OK ! fi echo echo -n "***** Installing the package you need to compile,need 15 mins*****" echo yum -y install gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* make cmake bison bison-devel libaio &> /dev/null && echo 'Installing package OK!' cd $SOFTFILEPATH echo echo "***** Check the mysql package *****" echo if [ ! -f ${SOFTFILEPATH$SOFTEDITION}.${SOFTSUFFIX} ]; then echo -n "Have no mysql package,downloading..." echo wget -c ${WEBSITEPATH}${SOFTEDITION}.${SOFTSUFFIX} fi tar xzf ${SOFTFILEPATH}${SOFTEDITION}.${SOFTSUFFIX} cd ${SOFTFILEPATH}${SOFTEDITION} echo echo '***** Installing MySQL...******' echo cmake . -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} -DDEFAULT_CHARSET=${DEFAULT_CHARSET} -DDEFAULT_COLLATION=${DEFAULT_COLLATION} -DMYSQL_DATADIR=${DATA_PATH} -DMYSQL_TCP_PORT=${TCP_PORT} -DMYSQL_UNIX_ADDR=${SOCKET_PATH} -DSYSCONFDIR=${CNF_PATH} echo echo "execute command ==> make && make install" echo make && make install echo echo -n '***** Initialization MySQL... ****' echo ( cd $INSTALL_PATH ./scripts/mysql_install_db --user=mysql --basedir=${INSTALL_PATH} --datadir=${DATA_PATH} /bin/cp -f ${PWD}/support-files/mysql.server /etc/init.d/mysqld /bin/cp -f ${PWD}/support-files/my-medium.cnf ${CNF_PATH} echo "PATH=${INSTALL_PATH}/bin/:${PATH}" >> /etc/profile chkconfig --add mysqld chkconfig mysqld on #service mysqld start ) &> /dev/null && echo ' Completed!' || exit echo echo '***** configure the my.cnf *****' echo echo "[client] port = 3306 socket = /data/mysql.sock [mysql] no-auto-rehash [mysqld_safe] open-files-limit = 8192 [mysqldump] quick [mysqld] port = 3306 character_set_server = utf8 socket = /data/mysql.sock sql_mode = STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION default_storage_engine = INNODB basedir = /usr/local/mysql datadir = /data general_log = 0 wait_timeout=10 back_log = 100 max_connections = 1200 connect_timeout = 300 max_connect_errors = 20 table_open_cache = 2048 table_definition_cache = 2048 skip_external_locking = ON max_allowed_packet = 500M max_heap_table_size = 128M read_rnd_buffer_size = 8M sort_buffer_size = 1m join_buffer_size = 1m thread_cache_size = 256 query_cache_size = 32M query_cache_limit = 2M tmp_table_size = 246M expire_logs_days = 15 innodb_buffer_pool_size = 512M innodb_thread_concurrency = 2 innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 16M innodb_log_file_size = 512M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 75 innodb_purge_batch_size = 300 innodb_flush_method = O_DSYNC innodb_lock_wait_timeout = 120 innodb_file_per_table = ON innodb_open_files = 5000 open_files_limit = 65535 innodb_buffer_pool_instances = 8 innodb_read_io_threads = 16 innodb_write_io_threads = 4 innodb_io_capacity = 400 innodb_doublewrite = ON innodb_use_native_aio = ON innodb_flush_neighbors = 1 innodb_buffer_pool_dump_at_shutdown = 1 innodb_buffer_pool_dump_now = 1 innodb_buffer_pool_load_at_startup = 1 innodb_buffer_pool_load_now = 1 innodb_support_xa = 0 innodb_purge_threads = 1 innodb_change_buffering = all innodb_change_buffer_max_size = 25 skip_name_resolve explicit_defaults_for_timestamp = 1 slow_query_log = 1 long_query_time = 3 slow_query_log_file = /data/slow_query_log/slow_query_log log_queries_not_using_indexes = 1 log_throttle_queries_not_using_indexes = 20 sync_binlog = 1 binlog_checksum = CRC32 log_output = file log_bin = /data/mysql_bin/log_bin log_bin_index = /data/mysql_bin/mysql_bin.index binlog_format = ROW binlog_row_image = minimal binlog_cache_size = 6M max_binlog_cache_size = 512M max_binlog_size = 1G lower_case_table_names=1" > ${CNF_PATH} && echo 'configure the my.cnf completed !' chown -R mysql:mysql ${DATA_PATH} chown -R mysql:mysql ${INSTALL_PATH} ln -fs ${CNF_PATH} /etc/my.cnf echo echo ***** source profile and start mysql ********************* source /etc/profile ${INSTALL_PATH}/bin mysqld start echo echo "***************************************** Install details : Install path = ${INSTALL_PATH} Data path = ${DATA_PATH} Socket path = ${SOCKET_PATH} The my.cnf path = ${CNF_PATH} or /etc/my.cnf The slow_query_log=${SLOW_QUERY_LOG} The log_bin=${LOG_BIN} Default collation = ${DEFAULT_COLLATION} Please alter the mysql password and configure the my.cnf for your self . ******************************************" echo echo '***** Installed Completed! *****' echo
3、执行脚本,安装
[root@mysql ~]# bash myinstall.sh
4、需要注意的坑:初始化数据库、文件路径权限