一、 系統安裝條件
1.cmake
MySQL使用cmake跨平臺工具預編譯源碼,用於設置mysql的編譯參數。
sudo apt-get install cmake
- 1
2.bison
Linux下C/C++語法分析器
sudo apt-get install bison
- 1
3.ncurses
字符終端處理庫
sudo apt-get install libncurses5-dev
- 1
4. gcc
GCC是Linux下的C語言編譯工具,mysql源碼編譯完全由C和C++編寫。Ubuntu默認已裝。
5.安裝依賴庫
apt-get -y install libncurses5-dev
apt-get -y install bison
6. Boost 1.59.0
mysql源碼中用到了C++的Boost庫,要求必須安裝boost1.59.0
下載Boost1.59.0源代碼,並解壓到/usr/local/目錄下:
wget -O https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/
- 1
- 2
二、 下載MySQL源碼
從github上下載mysql的源碼
https://github.com/mysql/mysql-server.git
三、 編譯MySQL源碼
1. 添加Mysql用戶
groupadd mysql
useradd -r -g mysql mysql
- 1
- 2
2. 創建Mysql安裝程序的目錄和數據文件的目錄
mkdir /usr/local/mysql
mkdir /home/MysqlData
chown -R mysql.mysql /usr/local/mysql
chown -R mysql.mysql /home/MysqlData
- 1
- 2
- 3
- 4
3. 解壓縮Mysql5.7源碼,並編譯
tar -zxvf mysql-server-5.7.zip
cd mysql-server-5.7
- 1
- 2
用cmake配置mysql預編譯參數:
-DCMAKE_INSTALL_PREFIX:安裝路徑
-DMYSQL_DATADIR:數據存放目錄
-DWITH_BOOST:boost源碼路徑
-DSYSCONFDIR:my.cnf配置文件目錄
-DEFAULT_CHARSET:數據庫默認字符編碼
-DDEFAULT_COLLATION:默認排序規則
-DENABLED_LOCAL_INFILE:允許從本文件導入數據
-DEXTRA_CHARSETS:安裝所有字符集
更多預編譯配置參數請參考mysql官方文檔說明:http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#cmake-general-options
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost \
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/MysqlData \
-DEXTRA_CHARSETS=all
- 1
- 2
- 3
- 4
- 5
編譯並安裝(兩個命令分開進行):
sudo make
sudo make install
- 1
- 2
三、 安裝配置MySQL
1. 初始化Mysql數據庫
cd /usr/local/mysql
./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/MysqlData
# 5.7.6之後版本初始系統數據庫腳本(本文使用上種方式)
cd 到mysql安裝目錄
/bin/mysqld --initialize --basedir=/usr/local/mysql --datadir=/home/MysqlData
/bin/mysql_ssl_rsa_setup
- 1
- 2
- 3
- 4
- 5
注意:如果使用–initialize參數初始化系統數據庫之後,會在~/.mysql_secret文件中生成root用戶的一個臨時密碼,同時也在初始化日誌中打印出來了
2.配置文件
cp support-files/my-default.cnf /etc/my.cnf #依個人需要
vim /etc/my.cnf
[client]
port =3306
[mysqld]
port =3306
binlog_format =row
#gtid_mode =on
basedir =/usr/local/mysql
datadir =/home/MysqlData
socket =/usr/local/mysql/mysql.sock
pid-file =/usr/local/mysql/mysql.pid
key_buffer_size = 1024M
max_allowed_packet = 160M
thread_stack = 192K
thread_cache_size = 200
max_connections = 3000
#thread_concurrency = 500
wait_timeout = 288000
interactive_timeout = 288000
query_cache_limit = 1M
query_cache_size = 1024M
thread_cache_size = 20
expire_logs_days = 10
max_binlog_size = 100M
innodb_thread_concurrency = 0
character_set_server =utf8
bind-address = 0.0.0.0
server_id = 1
log-bin = mysql-bin
log-slave-updates = 1
log-error = /home/MysqlData/mysql.err
#relay log
skip_slave_start =1
binlog_format =mixed
#skip-grant-tables
[mysqlsafe]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
3.配置Mysql服務
由於Ubuntu沒有chkconfig命令,用update-rc.d命令將Mysql服務加入到系統服務中。
cp support-files/mysql.server /etc/init.d/mysql
update-rc.d mysql defaults
update-rc.d mysql start 2 3 4 5 . stop 0 1 6
- 1
- 2
- 3
4.啓動Mysql服務
shell> service mysql start # 啓動mysql服務
shell> service mysql stop # 停止mysql服務
shell> service mysql restart # 重新啓動mysql服務
- 1
- 2
- 3
5.設置數據庫密碼
my.cnf中加上一行skip-grant-tables
免密登錄後修改user表
再去掉skip-grant-tables,重啓Mysql
6.配置mysql環境變量
shell> vim /etc/profile
shell> export PATH=/usr/local/mysql/bin:$PATH
shell> source /etc/profile
- 1
- 2
- 3
四、其它注意事項
如果中途編譯失敗了,需要刪除cmake生成的預編譯配置參數的緩存文件和make編譯後生成的文件,再重新編譯。
shell> cd mysql-server-5.7
shell> rm -f CMakeCache.txt
shell> make clean