1. 程式人生 > >centos7 mysql5.7原始碼安裝

centos7 mysql5.7原始碼安裝

mysql5.7安裝注意事項:

1.mysql5.7中mysql_install_db已經不再推薦使用了,建議改成mysql-initialize完成例項初始化。

(mysql_install_db在mysq/bin下,同時取消了mysql/scripts目錄)

2.在初始化時如果加上--initialize-insecure,則會建立空密碼[email protected]賬號,否則會建立帶密碼的[email protected]賬號,密碼直接寫在log-error日誌檔案中;

3.mysql5.7與5.6安裝主要區別在資料庫初始化過程。

mysql5.7安裝步驟:

安裝相關依賴:

yum -y groupinstall "Development tools"

yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make

建立相關目錄

mkdir -p /user/local/mysql5.7

mkdir -p /user/local/mysql5.7/data

mkdir -p /user/local/mysql5.7/log

mkdir -p /user/local/mysql5.7/tmp

賦權 建賬號

useradd mysql

chown mysql:mysql -R /user/local/mysql5.7

下載二進位制包:

cd /user/local/mysql5.7

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

解壓二進位制包:

tar -xvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 

mv mysql-5.7.24-linux-glibc2.12-x86_64 ./*

rm -rf mysql-5.7.24-linux-glibc2.12-x86_64

編輯配置檔案:

vim /etc/my.cnf 沒有就預設配置

初始化mysql

/usr/local/mysql5.7/bin/mysqld --defaults-file=/etc/my3306.cnf --initialize-insecure --explicit_defaults_for_timestamp --basedir=/usr/local/mysql5.7 --datadir=/usr/local/mysql5.7/data/ --user=mysql

啟動mysql

/usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/etc/my3306.cnf --datadir=/usr/local/mysql5.7/data/ --user=mysql &

登入mysql 

 /usr/local/mysql5.7/bin/mysql -S /user/local/mysql5.7/tmp/mysql.sock

設定密碼:

select user,host,authentication_string from mysql.user;
update mysql.user set authentication_string=password('root') where user='root';

設定環境變數及開機自啟動

  

 
CentOS7開始使得以往老版本系統服務的/etc/init.d的啟動指令碼的方式就此改變,在CentOS7中所有對服務的管理都集中到了systemctl當中。

systemctl是一個系統管理守護程序、工具和庫的集合,用於取代以往的System V、service和chkconfig命令。

建立用於啟動MySQL的配置檔案
[[email protected] ~]# touch /usr/lib/systemd/system/mysqld.service
[[email protected] ~]# cd /usr/lib/systemd/system
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql5.7/bin/mysqld --defaults-file=/etc/my3306.cnf --datadir=/usr/local/mysql5.7/data/ --user=mysql
ExecStop= mysqladmin shutdown
LimitNOFILE = 5000

###備註:ExecStart
查詢mysqld路徑,例如:
[[email protected] system]# which mysqld
/opt/mysql-5.7.18/bin/mysqld


通過systemctl方式啟動mysql5.7:
[[email protected] system]# systemctl start mysqld
新增自啟動:
systemctl enable mysqld

ps -ef|grep mysql 檢視是否啟動 

將mysql加入環境變數:

vim /etc/profile

export PATH=$PATH:/usr/local/mysql5.7/bin、

source /etc/profile

問題:

1.遇到在centos裡安裝mysql資料庫後,登入時提示‘/tmp/mysql.sock’

 進入到‘/etc/’目錄下,找到my.cnf檔案開啟,在最後一行下面加入一下內容,因為“[mysqld]”是針對服務端進行設定,[mysql]”是針對客戶端訪問進行設定;

設定軟連線 ln -s /usr/local/mysql5.7/tmp/mysql.sock /tmp/mysql.sock

2.啟動mysql為什麼用mysqld_safe而不直接用mysqld

mysqld_safe與mysqld區別,mysqld_safe指令碼會在啟動MySQL伺服器後繼續監控其執行情況,並在其宕機時重新啟動它。

它通常做如下事情:

1. 檢查系統和選項。
2. 檢查MyISAM表。
3. 保持MySQL伺服器視窗。
4. 啟動並監視mysqld,如果因錯誤終止則重啟。
5. 將mysqld的錯誤訊息傳送到資料目錄中的host_name.err 檔案。
6. 將mysqld_safe的螢幕輸出傳送到資料目錄中的host_name.safe檔案。