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; 回車使剛才的修改生效,再次遠端連線資料庫成功。