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檔案。