1. 程式人生 > >centos7下安裝Mysql5.6(原始碼方式)

centos7下安裝Mysql5.6(原始碼方式)

Mysql安裝和配置

我使用原始碼編譯的形式來安裝mysql,使用的mysql5.6。
1.下載

wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.40.tar.gz

2.解除安裝自帶mysql
因為mysql收費了,所以centos7.4內部預設不再整合mysql,而是整合mariadb。安裝mysql會和mariadb的檔案衝突,所以需要先解除安裝mariadb

#列出安裝的mysql。
rpm -qa | grep mariadb   ###顯示mariadb-libs-5.5.56-2.el7.x86_64
#解除安裝 rpm -e mariadb-libs-5.5.56-2.el7.x86_64 ####會報如下錯誤 error: Failed dependencies: libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64 libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64 #強制解除安裝 rpm -e --nodeps mariadb-libs-5.5
.56-2.el7.x86_64 #檢查是否有遺留檔案。如果有刪除即可。 ls /etc/my.cnf ll /var/lib/mysql/ ll /var/lib64/mysql(64位)

3.安裝各種依賴

yum install gcc gcc-c++
yum install ncurses-devel.x86_64
yum install cmake.x86_64
yum install libaio.x86_64
yum install bison.x86_64
#Could NOT find Curses  (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
yum -y install ncurses-devel #和上面有重複的,我這裡是網上抄來的 yum -y install make gcc-c++ cmake bison-devel ncurses-devel gcc \ autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel*

4.指定編譯條件
mysql5.5版本之前都是通過./configure進行編譯環境檢查,mysql5.5之後(含5.5)用的是cmake

cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/usr/local/mysql/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DMYSQL_TCP_PORT=3306 \  

#-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
# 注意使用utf8mb4無法通過編譯檢查 \  
#-DDEFAULT_CHARSET=utf8 \  
#-DDEFAULT_COLLATION=utf8_general_ci \  
#-DENABLED_LOCAL_INFILE=1 \

各配置選項的含義,可參考mysql官方文件:
https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

# 【MySQL安裝的根目錄】預設/usr/local/mysql
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
# 【存放資料的目錄】 可以在mysql啟動時通過--datadir選項設定。
-DMYSQL_DATADIR=/usr/local/mysql/data
# 【MySQL的sock檔案目錄】mysql伺服器用於監聽的套接字,必需是絕對路徑,預設是/tmp/mysql.sock。
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
# 【預設的my.cnf檔案目錄】。該值在mysql啟動時不能設定。但是可以使用--defaults-file=file_name(檔案的全路徑名)選項來使用指定的配置檔案。
-DSYSCONFDIR=/usr/local/mysql/etc
# 【PID檔案目錄】預設為/var/run/mysqld。使用systemd來管理mysql時會在該目錄下建立pid檔案。
-DSYSTEMD_PID_DIR=/usr/local/mysql
# 【監聽埠】
-DMYSQL_TCP_PORT=3306 \ 

# 【【編譯檢查不能通過】】
#-DDEFAULT_CHARSET=utf8mb4
#-DDEFAULT_COLLATION=utf8mb4_unicode_ci
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci

# 允許從本地匯入資料
-DENABLED_LOCAL_INFILE=1                                    

說明:關於設定utf8mb4無法通過編譯檢查的說明,可參考這篇部落格說明:https://yq.aliyun.com/articles/586650

4.編譯安裝


# 編譯。(mysql編譯相當的慢。我在阿里雲單核2g ECS上要了差不多七八分鐘)
make 
# 安裝
make install

5.初始化資料庫

#執行指令碼,來建立系統自帶的資料庫和表

cd /usr/local/mysql/scripts
./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql

##上面如果報錯,則安裝autoconf庫
yum -y install autoconf

6.建立使用者組、使用者

#建立mysql組
groupadd mysql
#建立mysql使用者
useradd -r -g mysql mysql

7.設定開機啟動

vim /usr/lib/systemd/system/mysqld.service

加入以下內容

[Unit]
Description=MySQL5.6
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target syslog.target

[Service]
Type=forking
#強烈建議在 Type=forking 的情況下明確設定此選項
PIDFile=/usr/local/mysql/mysqld.pid
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf

User=mysql
Group=mysql
PrivateTmp=true
[Install]
WantedBy=multi-user.target

每次修改了該檔案,記得要執行以下命令

systemctl daemon-reload

8.設定開機啟動

#設定開機啟動
systemctl enable mysqld

#啟動mysql
systemctl start mysqld

9.防火牆開放3306埠

firewall-cmd  --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

10.mysql安全
執行命令,重置密碼 mysql_secure_installation

#會依次出現以下問題。

Set root password? [Y/n]
是否設定root使用者的密碼 (y。【設定登入密碼】)

Remove anonymous users? [Y/n]
是否刪除匿名使用者 (y)

Disallow root login remotely? [Y/n]
是否禁止root遠端登入 (n)

Remove test database and access to it? [Y/n]
是否刪除database資料庫

Reload privilege tables now? [Y/n]
是否重新載入授權資訊 (y)

11.開啟root遠端登入
預設只允許root帳戶在本地登入,如果要遠端連線mysql,必須修改root允許遠端連線,或者新增一個允許遠端連線的帳戶。

# 開放Root遠端連線許可權
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '遠端登入密碼' WITH GRANT OPTION;

FLUSH PRIVILEGES;

# 建立新使用者用於遠端連線
GRANT ALL PRIVILEGES ON *.* TO '新使用者名稱'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;

FLUSH PRIVILEGES;

12.my.cnf配置

[client]
default-character-set = utf8mb4

[mysql] 
default-character-set = utf8mb4

[mysqld]
#配置預設編碼為utf8
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init_connect=’SET NAMES utf8mb4’

#表名不區分大小寫
lower_case_table_names=1

#資料庫錯誤日誌檔案
log_error=/usr/local/mysql/logs/error.log

13.設定環境變數(可選)
設定環境變數,然後就可以在bin目錄之外執行mysql的相關命令。

#開啟profile檔案
vim /etc/profile

#在檔案末尾新增。儲存
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOEM/bin

#重新整理配置
source /etc/profile