mysql之編譯安裝


  在CentOS7中編譯安裝MySQL 5.7.29

一。依賴包安裝

yum install gcc gcc-c++ ncurses ncurses-devel cmake bison -y

 

二。下載源碼包(MySQL5.7.29源碼包和依賴boost)

curl -o boost_1_59_0.tar.gz https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

curl -o mysql-5.7.29.tar.gz 
http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.29.tar.gz

 

三。解壓

# 進入下載路徑

#boost解壓到/usr/local/目錄
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/

#MySQL解壓到當前目錄
tar -zxvf mysql-5.7.29.tar.gz

 

四。創建用戶和組

創建MySQL用戶和組,並且用戶不能登錄

groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql

 

五。創建相關目錄

  • 創建數據目錄
mkdir -p /data/mysql && chown mysql.mysql /data/mysql
  • 創建log目錄
mkdir -p /var/log/mysql && chown mysql.mysql /var/log/mysql
  • 創建Unix SOCK目錄
mkdir -p /var/lib/mysql && chown mysql.mysql /var/lib/mysql
  • 創建PID目錄
mkdir -p /var/run/mysqld && chown mysql.mysql /var/run/mysqld

 

六。預編譯

使用各種參數,預編譯源代碼。進入解壓的MySQL源碼目錄,執行命令:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/data/mysql  -DSYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=1 -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=0 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0

格式化:

cmake . 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql  
-DMYSQL_DATADIR=/data/mysql  
-DSYSCONFDIR=/etc 
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock 
-DEXTRA_CHARSETS=all 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci 
-DWITH_MYISAM_STORAGE_ENGINE=1 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_PARTITION_STORAGE_ENGINE=1 
-DENABLED_LOCAL_INFILE=1 
-DENABLED_PROFILING=1 
-DMYSQL_TCP_PORT=3306 
-DWITH_DEBUG=0 
-DDOWNLOAD_BOOST=1 
-DWITH_BOOST=/usr/local/boost_1_59_0

  說明:

DCMAKE_INSTALL_PREFIX=/usr/local/mysql :安裝路徑 
DMYSQL_DATADIR=/data/mysql :數據文件存放位置 
DSYSCONFDIR=/etc :my.cnf路徑 
DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock :連接數據庫socket路徑 
DEXTRA_CHARSETS=all :安裝所有的字符集 
DDEFAULT_CHARSET=utf8 :默認字符 
DDEFAULT_COLLATION=utf8_general_ci :排序集 
DWITH_MYISAM_STORAGE_ENGINE=1 :支持MyIASM引擎 
DWITH_INNOBASE_STORAGE_ENGINE=1 :支持InnoDB引擎 
DWITH_PARTITION_STORAGE_ENGINE=1 :安裝支持數據庫分區 
DENABLED_LOCAL_INFILE=1 :允許從本地導入數據 
DENABLED_PROFILING=1 : 
DMYSQL_TCP_PORT=3306 :端口 
DWITH_DEBUG=0 : 
DDOWNLOAD_BOOST=1 :允許下載 
DWITH_BOOST=/usr/local/boost_1_59_0 :本地boost路徑

 

七。編譯安裝

# 指定CPU數量編譯 
make -j `grep processor /proc/cpuinfo | wc -l` && make install

 

八。添加開機自啟動

對目錄修改權限,添加service/systemd服務

chown -R mysql:mysql /usr/local/mysql 
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 
chmod +x /etc/init.d/mysqld 
# 開機自啟 chkconfig
--add mysqld chkconfig mysqld on

 

九。環境變量

將/usr/local/mysql/bin添加進入環境變量, 或者直接使用軟鏈接的方式鏈到/usr/local/bin下: 

# 添加到環境變量 
echo "" >> /etc/bashrc 
echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/bashrc 
echo "" >> /etc/bashrc 
source ~/.bashrc 
或添加到/etc/profile

PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
source /etc/profile

# 使用軟鏈接 ln
-s /usr/local/mysql/bin/* /usr/local/bin/

 

十。初始化數據庫

以上完成之后, 需要先進行初始化數據庫, 否則直接啟動會報錯

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

--user :指定用戶
--basedir :MySQL所在目錄
--datadir :MySQL數據庫和表所在的目錄,以及pid文件

 

十一。啟動服務

# 使用service 
service mysqld start 

# 使用systemd 
systemctl daemon-reload 
systemctl start mysqld

 

十二。修改配置文件(/etc/my.cnf)

   參考:

[root@iZ2864f6btwZ mysql-5.7.19]# vim /etc/my.cnf 

[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock

[mysqld_safe]
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/pids/mysqld.pid

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[client]
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

[mysql]
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

 

十三。啟動服務

service mysqld start

# 查看mysql運行狀態
service mysqld status

 

十四。修改root用戶密碼

MySQL 5.7版本下的mysql數據庫下已經沒有password這個字段了,password字段改成了authentication_string,查詢時使用authentication_string字段即可
  1)設置密碼(推薦)

進入mysql庫
update user set authentication_string=PASSWORD('newpassword') where user='root';

flush privileges;

  2)快速設置密碼

mysqladmin -u root password 'newpassword'

 

 

常見問題:

  1. 預編譯的術后出現錯誤

 

   解決方案:

  臨時添加交換空間(虛擬內存)

[root@iZ2864f6btwZ mysql-5.7.19]# dd if=/dev/zero of=/swapfile bs=1k count=2048000
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB) copied, 34.6782 s, 60.5 MB/s
[root@iZ2864f6btwZ mysql-5.7.19]# mkswap /swapfile
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=56026239-26e6-40d9-b080-b95acd9db058
[root@iZ2864f6btwZ mysql-5.7.19]# swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
[root@iZ2864f6btwZ mysql-5.7.19]# chmod 600 /swapfile

  繼續執行make操作:

make clean
make

  如果編譯完成之后不再使用交換空間,可執行命令:

[root@iZ2864f6btwZ mysql-5.7.19]# swapoff /swapfile
[root@iZ2864f6btwZ mysql-5.7.19]# rm /swapfile

 

溫馨提示:
MySQL編譯過程等待時間會比較久,有時都以為是“卡”住了,你可以使用top命令查看資源狀態,看看cc1plus、make等進程是否在跳動,如果有跳動說明安裝還在繼續,由於我的 ecs 配置較低,此過程大約經歷了幾個小時,特別是在29%和74%的時候,幾乎都要快放棄了, 如果有經濟的能力的話,建議服務器配置還是盡量買高一點。
[root@iZ2864f6btwZ mysql-5.7.19]# top

 

 

  2. 客戶端連接MySQL

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

  問題:/etc/my.cnf文件配置不正確

  解決方案:

  修改為正確的路徑即可,可全局搜索my.sock

 

 

 

參考: https://www.jianshu.com/p/4416792750c7


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM