1. 程式人生 > >mysql5.7.19在centos虛擬機器下手動(離線)安裝配置過程與一些問題解決辦法

mysql5.7.19在centos虛擬機器下手動(離線)安裝配置過程與一些問題解決辦法

一、centos下手動配置MySQL資料庫

1.下載MySQL資料庫官網: https://dev.mysql.com/downloads/mysql/  我下載的是mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

2.通過winscp軟體進行傳輸到centos(類似於ftp,連線centos,方法自行百度,Google)下,注意防火牆是否在執行,在執行就關閉

4、解除安裝系統自帶的Mariadb
  rpm -qa|grep mariadb         //查詢出已安裝的mariadb
  rpm -e --nodeps 檔名      //解除安裝 , 檔名為使用rpm -qa|grep mariadb 命令查出的所有檔案

5、刪除etc目錄下的my.cnf檔案
       rm /etc/my.cnf

6、 執行以下命令來建立mysql使用者組
    groupadd mysql

7、執行以下命令來建立一個使用者名稱為mysql的使用者並加入mysql使用者組
    useradd -g mysql mysql

8、解壓安裝包並且放到 /usr/local裡面,重新命名為mysql

    tar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
    mv  mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
    
9、在etc下新建配置檔案my.cnf,並在該檔案內新增以下程式碼:

    [mysql]
    # 設定mysql客戶端預設字符集
    default-character-set=utf8
    socket=/var/lib/mysql/mysql.sock
    [mysqld]
    skip-name-resolve
    #設定3306埠
    port=3306
    socket=/var/lib/mysql/mysql.sock
    # 設定mysql的安裝目錄
    basedir=/usr/local/mysql
    # 設定mysql資料庫的資料的存放目錄
    datadir=/usr/local/mysql/data
    # 允許最大連線數
    max_connections=200
    # 服務端使用的字符集預設為8位元編碼的latin1字符集
    character-set-server=utf8
    # 建立新表時將使用的預設儲存引擎
    default-storage-engine=INNODB
    lower_case_table_names=1
    max_allowed_packet=16M

10、建立步驟9中用到的目錄並將其使用者設定為mysql

    mkdir /var/lib/mysql
    mkdir /var/lib/mysql/mysql
    chown -R mysql:mysql /var/lib/mysql
    chown -R mysql:mysql /var/lib/mysql/mysql

11、進入/usr/local/mysql目錄

    cd /usr/local/mysql
    chown -R mysql:mysql ./                       #修改當前目錄擁有者為mysql使用者

    ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/   #安裝資料庫mysql5.7.x mysql_install_db命令在bin資料夾下面
                                                       #不同版本的安裝命令在的位置不一樣,需要大家注意
    chown -R mysql:mysql data                       #修改當前data目錄擁有者為mysql使用者

 
到此資料庫安裝完畢!


二、配置MySQL
1、授予my.cnf的最大許可權。

    chown 755 /etc/my.cnf    #配置my.cnf許可權為:rwxr-xr-x

設定開機自啟動服務控制指令碼:
2、複製啟動指令碼到資源目錄在 /usr/local/mysql目錄下面複製mysql.server到/etc/rc.d/init.d/mysqld(重新命名為mysqld)

    cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

3、增加mysqld服務控制指令碼執行許可權

    chmod +x /etc/rc.d/init.d/mysqld

4、將mysqld服務加入到系統服務

    chkconfig --add mysqld

5、檢查mysqld服務是否已經生效

    chkconfig --list mysqld


命令輸出類似下面的結果:

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

表明mysqld服務已經生效,在2、3、4、5執行級別隨系統啟動而自動啟動,以後可以使用service命令控制mysql的啟動和停止。
6、啟動msql(停止mysqld服務:service mysqld stop)

    service mysqld start

7、將mysql的bin目錄加入PATH環境變數,編輯/etc/profile檔案,在檔案最後新增如下資訊

    vi /etc/profile

   在檔案最後新增如下資訊
   export PATH=$PATH:/usr/local/mysql/bin

8、執行下面的命令使所做的更改生效:

    source /etc/profile

    可以檢查有沒有配成功

    ecoh $PATH   #包含了/usr/local/mysql/bin說明命令已經生效

9、可以登入了

   mysql -u root -p  #注:如果需要密碼那麼可以採用忘記密碼方式取登入

10、在配置檔案my.cnf最後面加入無密碼登入的配置

   vi /etc/my.cnf

   加入
   skip-grant-tables

   儲存並退出

   :wq!

11、重啟mysql

   service mysqld restart

12、輸入mysql進入mysql資料庫

   mysql -uroot -p  #密碼為空,不用輸

13、選擇mysql資料庫進行修改密碼

   use mysql

   update user set authentication_string=password('123456') where user='root'; #mysql5.7版本的user表,已經沒有password欄位,
                                        #如果authentication_string 是password會提示沒有"no password field"

   flush privileges;    #重新整理許可權

   exit;    #退出

14、再回到/etc/my.cnf裡面註釋skip-grant-tables儲存退出

   #skip-grant-tables

   :wq!

15、重啟mysqld

   service mysqld restart

16、然後就可以用密碼登入了

   mysql -uroot -p
   Enter password:            #輸入密碼



當然瞭如果想訪問宿機(真機)裡面的mysql資料庫出現下列問題時可以嘗試下列方法,親自試過可行,
下面是centos裡面mysql訪問真機win7裡面的mysql的例子,在win7下mysql授權已經防火牆需要設定如下操作

can't connect to mysql server on '192.168.175.101' (110)

解決辦法
grant all privileges on database_name.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;


當配好虛擬機器與主機能相互通訊時,並且MySQL也已經裝好,但是想通過centos虛擬機器訪問win7的MySQL資料庫卻報

can't connect to mysql server on '192.168.175.101' (110)錯誤

網上查詢說是MySQL沒有原創授權於是授權,如下

開啟cmd,執行 mysql -u root -p 在輸入密碼

再輸入兩句授權語句

grant all privileges on database_name.* to 'root'@'192.168.123.10' identified by '123456' with grant option;
flush privileges;

表示給root在192.168.123.10的ip下訪問MySQL,database_name指可以訪問的資料庫,後面的 .* 指資料庫裡面的所有表,最後重新整理一下許可權。

但是在連虛擬機器連線主機MySQL時報了上面的錯,其實就是防火牆的問題,也比較簡單,進入到win7的控制面板—》系統安全—》防火牆—》高階設定下面幾部完成

新建入站規則與出站規則,過程步驟都一致

埠選擇

1)下一步,選擇tcp,特定埠,預設MySQL埠為3306

2)下一步,允許連線

3)繼續下一步,選擇三個複選框

4)點選下一步,填寫名稱與描述

5)完成

完成了入站與出站後

在虛擬機器輸入mysql -h 192.168.xxx.xxx -u root -p

再輸密碼

即可成功!