MySQL編譯安裝


MySQL編譯和安裝

CentOS7中編譯安裝MySQL 5.7.21.

依賴和源碼包

安裝相關的依賴:

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

下載MySQL 5.7.21源碼包和依賴boost, MySQL 5.7.21依賴boost 1.59.0:

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.21.tar.gz http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.21.tar.gz

解壓下載的包:

# 進入下載的路徑

# 解壓到/usr/local/目錄
tar -xzvf boost_1_59_0.tar.gz -C /usr/local/
# 解壓到當前目錄
tar -xzvf mysql-5.7.21.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
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

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

初始化數據庫

以上都完成后, 還不能啟動MySQL, 如果非要啟動, 會報錯. 需要初始化數據庫:

/usr/local/mysql/bin/mysqld  --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
--user      :指定用戶
--basedir   :mysql所在目錄
--datadir   :mysql數據庫和表所在的目錄, 以及PID文件

初始化后, 會有一行提示, 冒號后面的是初始密碼root@localhost: password:

A temporary password is generated for root@localhost: xKefZvib13)5

啟動服務

以上都配置完成, 就可以啟動服務了:

# 使用service
service mysqld start

# 使用systemd
systemctl daemon-reload
systemctl start mysqld

修改密碼

將初始密碼修改成自己的密碼, 直接在shell中輸入命令: mysqladmin -uroot -p'old_pass' password 'new_pass'

配置文件

默認MySQL不需要配置文件, 編譯時已經配置好了, 但是也可以使用配置文件, 指定log的位置, 編輯vim /etc/my.cnf, 將以下內容添加到文件中:

[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock

# 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

[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
# pid-file=/var/run/mariadb/mariadb.pid

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


免責聲明!

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



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