1. 程式人生 > 實用技巧 >mysql5.7.30 編譯安裝

mysql5.7.30 編譯安裝

本文參考:http://chenzehe.iteye.com/blog/1266260感謝原作者的分享!

首先安裝/更新一些編譯時會用到的基礎包

[root@localhost local]# yum -y install gcc gcc-c++ make cmake ncurses ncurses-devel libxml2 libxml2-devel openssl-devel bison bison-devel

官網下載mysql 5.7.30版本原始碼包

編譯安裝mysql 5.7.30的版本需要gcc支援c++11,不懂的朋友可以看我另外一篇文章:原始碼安裝GCC-4.9.2

1、建立mysql使用者

[root@localhost local]# groupadd mysql 
[root@localhost local]# useradd -s /sbin/nologin -g mysql -M mysql #不允許mysql使用者登入

2、建立資料存放目錄

[root@localhost local]# mkdir -pv /data/dbdata

[root@localhost local]# mkdir -pv /data/innodb
[root@localhost local]# chown -R mysql.mysql /data/ #修改目錄許可權為mysql

3、安裝mariadb

#官網下載boost檔案,解壓到當前目錄


# 在mysql路徑下新增bld資料夾,將編譯的檔案放在這個資料夾裡 mysql-5.7.30
[root@localhost mysql-5.7.30]# mkdir bld

[root@localhost mysql-5.7.30]#

cmake .. -DMYSQL_UNIX_ADDR=/tmp/mysql.sock\
-DSYSCONFDIR=/usr/local/mysql\
-DMYSQL_TCP_PORT=3306\
-DEXTRA_CHARSETS=all\
-DMYSQL_USER=mysql\
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\

-DMYSQL_DATADIR=/data/mysql/dbdata\
-DWITH_XTRADB_STORAGE_ENGINE=1\
-DWITH_FEDERATEDX_STORAGE_ENGINE=1\
-DWITH_ARCHIVE_STORAGE_ENGINE=1\
-DWITH_MYISAM_STORAGE_ENGINE=1\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_ARCHIVE_STPRAGE_ENGINE=1\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
-DWIYH_READLINE=1\
-DWIYH_SSL=system\
-DVITH_ZLIB=system\
-DWITH_LOBWRAP=0\
-DWITH_BOOST=/usr/local/src/mysql-5.7.30/boost/boost_1_59_0/\
-DDEFAULT_CHARSET=utf8mb4\
-DDEFAULT_COLLATION=utf8mb4_general_ci

[root@localhost mysql-5.7.30]# make
[root@localhost mysql-5.7.30]# make install

到這裡MariaDB已經算是安裝上了,進行配置就可以使用了。本人在這裡用的是多例項配置方法

1、配置檔案

#修改my.cnf檔案

# The MySQL server
[mysqld]
user=mysql
port = 3306
#bind-address = 127.0.0.1
socket = /tmp/mysql.sock

# skip-grant-tables
datadir = /data/mysql/dbdata
pid-file = /data/mysql/dbdata/my.pid
skip-external-locking
skip-name-resolve
interactive_timeout=86400
wait_timeout=86400

key_buffer_size = 384M
max_allowed_packet = 4M
table_open_cache = 1024
table_definition_cache = 1024
table_open_cache_instances = 32
sort_buffer_size = 2M
read_buffer_size = 2M
myisam_sort_buffer_size = 64M
thread_cache_size = 32
query_cache_size = 64M
max_connections = 150
max_connect_errors=400
max_heap_table_size = 64M
open_files_limit=2048
slow_query_log = 1
long_query_time = 2
slow-query-log-file = /data/mysql/dbdata/slowquery.sql
log-bin = /data/mysql/dbdata/replication
server-id = 100
log-slave-updates
skip-slave-start
character-set-server = utf8mb4
collation_server = utf8mb4_general_ci
master-info-file = /data/dbdata/master.info

# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /data/mysql/innodb
innodb_data_file_path = ibdata1:200M;ibdata2:200M;ibdata3:200M;ibdata4:200M;ibdata5:200M
innodb_log_group_home_dir = /data/mysql/innodb/
innodb_buffer_pool_size = 700M
innodb_log_file_size = 256M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 0
innodb_lock_wait_timeout = 50

default_storage_engine = innodb

2、初始化資料目錄

  #把用到的工具新增到/usr/bin目錄

[root@localhost mysql]# ln -s /usr/local/mysql/scripts/mysql_install_db /usr/bin/mysql_install_db
[root@localhost mysql]#./scripts/mysql_install_db --datadir=/data/dbdata --user=mysql

3、啟動資料庫

#將/usr/local/mysql/bin加到$PATH環境變數裡 
[root@localhost mysql]# vi /etc/profile

exportPATH=/usr/local/mysql/bin:$PATH #插入到最後一行

# 啟動 mysql
[root@localhost mysql]# cpsupport-files/mysql.server/etc/init.d/mysqld
[root@localhost mysql]# service mysqld start

在啟動的時候會載入innodb,中途不能重啟,否則會出現如下錯誤

151114 00:59:38 mysqld started

151114 0:59:38 [Warning] option 'thread_stack': unsigned value 126976 adjusted to 131072

InnoDB: No valid checkpoint found.

InnoDB: If this error appears when you are creating an InnoDB database,

InnoDB: the problem may be that during an earlier attempt you managed

InnoDB: to create the InnoDB data files, but log file creation failed.

InnoDB: If that is the case, please refer to

InnoDB: http://dev.mysql.com/doc/refman/5.0/en/error-creating-innodb.html

151114 0:59:38 [ERROR] Default storage engine (InnoDB) is not available

151114 0:59:38 [ERROR] Aborting

151114 0:59:38 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

151114 00:59:38 mysqld ended

刪除innodb資料夾,重新啟動就可以了

# mysql5.7.30 錯誤集錦

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

上面這個錯誤是由於 mysql沒有初始化密碼,執行以下語句即可
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql192' PASSWORD EXPIRE NEVER;
mysql> flush privileges;