1. 程式人生 > 其它 >Mysql 編譯安裝 version 5.7.13

Mysql 編譯安裝 version 5.7.13

參考地址:http://www.manongjc.com/article/91110.html

1.解除安裝系統自帶boots庫

1  [root@localhost]  #yum -y remove boost-* 

2.解除安裝系統自帶的mysql and mariadb

1  [root@localhost] #yum -y remove mysql
2  rpm -qa|grep mariadb ###centos7 自帶部分資料庫資訊
3  yum remove mariadb-libs -y ###移除自帶資料庫

3.安裝必要的資源依賴包

1 [root@localhost] #yum
install cmake,make,gcc,gcc-c++,bison, ncurses,ncurses-devel -y

4.安裝boost 庫1.59和mysql包

[root@localhost] wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
 [root@localhost] wget  http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.13.tar.gz

5.對boots包和mysql包進行解壓到對應的目錄下

1  [root@localhost] tar
zxf boost_1_59_0.tar.gz -C /usr/local/ 2 [root@localhost] tar zxf mysql-5.7.13.tar.gz -C /opt/

6.解壓完成後建立使用者及其相關目錄

1 groupadd mysql                       #mysql使用者組
2  useradd -r -g mysql -s /sbin/nologin  mysql    #新增mysql使用者
3  mkdir /data/mysql                    #建立資料目錄
4  chown  -R  mysql:mysql /data/mysql/   #修改資料目錄為mysql
5 chown -R mysql:mysql /home/mysql/

7. 配置mysql預編譯引數



 1 [root@localhost] # cd mysql-5.7.13
 2  [root@localhostmysql-5.7.13]# cmake -DCMAKE_INSTALL_PREFIX=/home/mysql \
 3  -DMYSQL_DATADIR=/home/mysql/ \                  #資料存放目錄
 4  -DDEFAULT_CHARSET=utf8 \ 
 5  -DDEFAULT_COLLATION=utf8_general_ci \
 6  -DMYSQL_TCP_PORT=3306 \
 7  -DMYSQL_USER=mysql \
 8  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 9  -DWITH_MYISAM_STORAGE_ENGINE=1 \
10  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
11  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
12  -DWITH_MEMPRY_STORAGE_ENGINE=1 \
13  -DDOWNLOAD_BOOST=1 \
14  -DWITH_BOOST=/usr/local/boost                        #boost原始碼路徑
15 16 17  #配置解釋
18  官方 工具選項解析
19 20  -DCMAKE_INSTALL_PREFIX=/usr/local/es/mysql57/ \ #安裝目錄
21  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ 伺服器偵聽套接字連線的Unix套接字檔案路徑,預設/tmp/mysql.sock。 這個值可以在伺服器啟動時用–socket選項來設定。所以這條可以去掉
22  -DMYSQL_DATADIR=/data/mysql \ MySQL資料目錄的位置。 該值可以在伺服器啟動時使用–datadir選項進行設定。
23  -DSYSCONFDIR=/etc \ 預設的my.cnf選項檔案目錄。 此位置不能在伺服器啟動時設定,但可以使用–defaults-file = file_name選項使用給定的選項檔案啟動伺服器,其中file_name是該檔案的完整路徑名。
24  -DMYSQL_USER=mysql \ 指定使用者名稱
25  -DMYSQL_TCP_PORT=3306 \ 伺服器偵聽TCP / IP連線的埠號。預設值是3306。 該值可以在伺服器啟動時使用–port選項進行設定。
26  -DWITH_XTRADB_STORAGE_ENGINE=1 \ 儲存引擎 XTRADB
27  -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 儲存引擎 INNOBASE
28  -DWITH_PARTITION_STORAGE_ENGINE=1 \儲存引擎 PARTITION
29  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \儲存引擎 BLACKHOLE
30  -DWITH_MYISAM_STORAGE_ENGINE=1 \ 儲存引擎 MYISAM
31  -DWITH_READLINE=1 \
32  -DENABLED_LOCAL_INFILE=1 \ 該選項控制MySQL客戶端庫的已編譯預設LOCAL功能???啥意思
33  -DWITH_EXTRA_CHARSETS=1 \ 這個為什麼是1,文件不是name ,字串嗎? 要包含哪些額外的字符集: all complex none
34  -DDEFAULT_CHARSET=utf8 \ 伺服器字符集。預設情況下,MySQL使用latin1(cp1252西歐)字符集。 該值可以在伺服器啟動時使用–character_set_server選項進行設定。
35  -DDEFAULT_COLLATION=utf8_general_ci \ 伺服器整理。預設情況下,MySQL使用latin1_swedish_ci。該值可以在伺服器啟動時使用–character_set_server選項進行設定。
36  -DEXTRA_CHARSETS=all \
37  -DWITH_BIG_TABLES=1 \
38  -DWITH_DEBUG=0 是否包含除錯支援。
39  -DWITH_BOOST=/usr/local/boost    #把定boost 目錄

8.編譯並安裝

1 [root@localhostmysql-5.7.13]# make -j  (-j引數是加快編譯速度)
2  [root@localhostmysql-5.7.13]# make install

9.配置環境變數

1 cd /home/mysql/
2  cp  support-files/mysql.server   /etc/init.d/mysqld  //複製啟動項
3 4  echo 'export PATH=$PATH:/opt/mysql/bin' >>/etc/profile ###設定環境變數
5  source /etc/profile ###立即執行
6  mysql -V    
7  [root@shell /home/mysql20:46:55]# mysql -V
8  mysql  Ver 14.14 Distrib 5.7.13, for Linux (x86_64) using  EditLine wrapper

10.初始化系統資料庫

 mysqld --initialize-insecure --user=mysql --basedir=/homw/mysql --datadir=/data/mysql
  可能出現報錯 說/data目錄有資料
  執行
  rm -rf /data/mysql/*
  再次執行初始化命令 

11.配置檔案及引數優化



 1 [root@localhostmysql-5.7.13]# cp /home/mysql/support-files/my-default.cnf  /etc/my.cof  //複製配置檔案
 2  #參考如下配置檔
 3  [root@shell ~20:55:34]# cat /etc/my.cof |grep  -Ev "#^|^$"
 4  [mysqld]
 5  port=3306
 6  user=mysql
 7  basedir=/home/mysql
 8  datadir=/data/mysql
 9  socket=/tmp/mysql.sock
10  [mysql]
11  socket=/tmp/mysql.sock 
12 13  # vim /etc/my.conf    參考
14  [client]
15  port = 3306
16  socket = /tmp/mysql.sock
17  [mysqld]
18  port  = 3306
19  socket = /tmp/mysql.sock
20  user = mysql
21  basedir = /usr/local/mysql
22  datadir = /data/mysql/data
23  pid-file = /data/mysql/mysql.pid
24 25  log_error = /data/mysql/mysql-error.log
26  slow_query_log = 1
27  long_query_time = 1
28  slow_query_log_file = /data/mysql/mysql-slow.log
29 30 31  skip-external-locking
32  key_buffer_size = 32M
33  max_allowed_packet = 1024M
34  table_open_cache = 128
35  sort_buffer_size = 768K
36  net_buffer_length = 8K
37  read_buffer_size = 768K
38  read_rnd_buffer_size = 512K
39  myisam_sort_buffer_size = 8M
40  thread_cache_size = 16
41  query_cache_size = 16M
42  tmp_table_size = 32M
43  performance_schema_max_table_instances = 1000
44 45  explicit_defaults_for_timestamp = true
46  #skip-networking
47  max_connections = 500
48  max_connect_errors = 100
49  open_files_limit = 65535
50 51  log_bin=mysql-bin
52  binlog_format=mixed
53  server_id   = 232
54  expire_logs_days = 10
55  early-plugin-load = ""
56 57  default_storage_engine = InnoDB
58  innodb_file_per_table = 1
59  innodb_buffer_pool_size = 128M
60  innodb_log_file_size = 32M
61  innodb_log_buffer_size = 8M
62  innodb_flush_log_at_trx_commit = 1
63  innodb_lock_wait_timeout = 50
64 65  [mysqldump]
66  quick
67  max_allowed_packet = 16M
68 69  [mysql]
70  no-auto-rehash
71 72  [myisamchk]
73  key_buffer_size = 32M
74  sort_buffer_size = 768K
75  read_buffer = 2M
76  write_buffer = 2M

12.修改mysql密碼

 1 #初始化出現報錯:
 2  2021-10-16T12:25:04.276507Z 0 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root
 3  4  #處理方法:
 5  修改密碼:
 6  mysqld_safe --skip-grant-tables --user=mysql 執行後會夯住,另開起一個視窗,輸入mysql+回車即可登入Mysql
 7  8  mysql>alter user 'root'@'localhost' identified by '123456';
 9  Query OK, 0 rows affected (0.00 sec)
10  flush privileges;
11  mysql> exit;

13.安裝成功 及啟動

1 cp  /home/mysql/support-files/mysql.server   /etc/init.d/mysqld  //複製啟動項
2  [root@localhost mysql]# service mysqld start  //啟動mysql
3  /etc/init.d/mysqld start   啟動Mysql
4  netstat -lntup |grep 3306  檢視mysql 是否啟動
Do everything well