1. 程式人生 > >Cent7安裝mysql5.7.11全過程

Cent7安裝mysql5.7.11全過程

下載mysql(注:其他版本未測過)

https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.11.tar.gz

1、安裝依賴包

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

2、解壓到/usr/local目錄下

tar -zxvf mysql-boost-5.7.11.tar.gz -C /usr/local

3、建立mysql組和使用者

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

4、編譯mysql

cd /usr/local/mysql-5.7.11/
cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
make    #注意:此步驟過程非常慢,建議使用 -j 4 4核的方式處理  同時保證伺服器的記憶體至少大於2G
make install

5、把原來的/etc/my.cnf備份

cp /etc/my.cnf /etc/my.cnf.bak
rm -f /etc/my.cnf

6、把安裝目錄使用者和組更改為mysql

cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .

7、建立一個數據目錄

mkdir -p /data/mysql/data/

8、初始化mysql,及開啟ssl新功能

bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data 
bin/mysql_ssl_rsa_setup  --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data 

9、 設為root是為了防止普通使用者不小心刪除資料庫

chown -R root .
chown -R mysql /data

10、拷貝配置檔案

cp support-files//my-default.cnf /etc/my.cnf
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

11、修改環境變數

vi /etc/profile 
# 在profile檔案末尾增加兩行 
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH 
export PATH 
 # 使PATH搜尋路徑立即生效:
source /etc/profile

12、修改配置檔案

vi /etc/my.cnf
#修改第19行(取消註釋且修改為)   datadir = /data/mysql/data/ 

13、啟動

service mysql start

 

到此,資料庫就已經安裝完畢了

 

接下需要開啟防火牆3306埠

firewall-cmd --add-port=3306/tcp --permanent

firewall-cmd --reload

firewall-cmd --list-port

 

但是 mysql -u root -p 不能直接登入,於是更改密碼,記錄如下:

1)vi /etc/my.cnf  
2)在[mysqld]下邊的某個位置增加: skip-grant-tables  ,然後 :wq 儲存退出
3)在 /usr/local/mysql/bin目錄下執行命令: ./mysql -u root -p ,然後回車兩次,進入到mysql 4)執行命令: use mysql SET SQL_SAFE_UPDATES = 0 5)update mysql.user set authentication_string=password('root') where User='root'; 6)flush privileges ; 7)執行命令:SET SQL_SAFE_UPDATES = 1 8)vi /etc/my.cnf ,刪除skip-grant-tables 行 9)service mysqld restart 10) 在 /usr/local/mysql/bin目錄下執行命令: ./mysql -u root -p 然後輸入新建的密碼:root即可進入mysql 

雖然現在可以登入了,但我們需要在其他客戶端遠端連線此資料庫,發現是連不通的

提示:Host 'xxx' is not allowed to connect to this MySQL server。網上找了一些資料,是mysql未開啟mysql遠端訪問許可權導致。

記錄解決方案供以後參考。:

1.登入到mysql:  mysql -uroot -ppwd

2.檢視user表: 

mysql> use mysql
Database changed
mysql> select host,user,password from user;
+------+------+-------------------------------------------+
| host | user | password |
+------+------+-------------------------------------------+
| localhost    | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
+------+------+-------------------------------------------+
1 row in set (0.00 sec)

表中host、user欄位標識了可以訪問資料庫的主機和使用者。例如上面的資料就表示只能本地主機通過root使用者訪問。原來如此,難怪遠端連線死活連不上。

為了讓資料庫支援遠端主機訪問,

可以直接修改host欄位的值,將localhost修改成需要遠端連線資料庫的ip地址。或者直接修改成%。修改成%表示,所有主機都可以通過root使用者訪問資料庫。為了方便,我直接修改成%。命令:mysql> update user set host = '%' where user = 'root';

再次檢視user表

+------+------+-------------------------------------------+
| host | user | password |
+------+------+-------------------------------------------+
| % | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
+------+------+-------------------------------------------+
1 row in set (0.00 sec)

修改成功,輸入命令mysql> FLUSH PRIVILEGES; 回車使剛才的修改生效,再次遠端連線資料庫成功。