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