Linux 系統下安裝 mysql5.7.25(glibc版)

前言:通過一天半的折騰,終於把 mysql 5.7.25 版本安裝上了 Amazon Linux AMI release 2017.09 系統上,把能參考的博客幾乎都看了一遍,終於發現這些細節問題,然而翻了無數的文章,基本上都沒有提到這些,因此小生儘可能把這些細節寫下來,一方面是供初學者們參考,另外一方面也是對本身花這麼長時間的摸索的一個總結,若有不足之處歡迎各路高手指正。node

1、安裝前的檢查mysql

  1. 檢查 linux 系統版本linux

        [root@localhost ~]# cat /etc/system-releasesql

  2. 檢查是否安裝了 mysql (mysql 有三種安裝方式:二進制包安裝、RPM包安裝、源碼裝)數據庫

      3. 系統內存檢查vim

        檢查一下 linux 系統的虛擬內存大小,若是內存不足 1G,啓動 mysql 的時候可能會產生下面這個錯誤提示:  後端

      Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code.ruby

      See "systemctl status mysqld.service" and "journalctl -xe" for details.[FAILED]bash

2、卸載MySQL數據庫(RPM安裝方式)網絡

      1. 查看是否安裝了MySQL組件

           [root@localhost ~]# rpm -qa | grep mysql

           若存在 mysql 安裝文件,則會顯示 mysql安裝的版本信息

     如:mysql-connector-odbc-5.2.5-6.el7.x86_64

      2. 卸載前先關閉MySQL服務

                [root@localhost ~]# service mysql status

                [root@localhost ~]# service mysql stop

  3. 卸載已安裝的MySQL,卸載mysql命令,以下:

      [root@localhost ~]# rpm -e --nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64

  4. 將/var/lib/mysql文件夾下的全部文件都刪除乾淨。

1
2
3
4
5
6
7
8
9
10
細節注意:
  檢查一下系統是否存在 mariadb 數據庫,若是有,必定要卸載掉,不然可能與 mysql 產生衝突。
  系統安裝模式的是最小安裝,因此沒有這個數據庫。
  檢查是否安裝了 mariadb:[root@localhost ~]# rpm -qa | grep mariadb
  若是有就使勁卸載乾淨:
        systemctl stop mariadb
        rpm -qa | grep mariadb
        rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64
        rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64
        rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

  

3、卸載MySQL數據庫(二進制/源碼安裝方式)

1. 檢查mysql服務並關閉服務進程

       (1)登陸Linux後執行service mysqld status 或者service mysql status命令查看MySQL服務狀態,根據開機初始化目錄下mysql腳本的文件名而定,我這裏是mysqld

       (2)若是正在運行則執行service mysqld stop或者service mysql stop命令中止MySQL服務,根據開機初始化目錄下mysql腳本的文件名而定,我這裏是mysqld

2. 查找mysql的安裝目錄並完全刪除

        (1)執行 find / -name mysql 查找跟mysql相關的目錄

        (2)執行 rm -rf ‘目錄'刪除查找出來的目錄

3. 刪除mysql配置文件

       (1)執行 rm -rf /etc/my.cnf命令刪除/etc/my.cnf文件

       (2)執行 rm -rf /etc/init.d/mysqld命令刪除/etc/init.d/下跟mysql有關的所有文件,通常包括mysql文件或mysqld文件,若是存在mysql文件則執行 rm -rf/etc/init.d/mysql命令

4. 刪除mysql用戶及用戶組

       (1)執行id mysql命令查看MySQL用戶及用戶組

       (2)執行userdel mysql命令刪除MySQL用戶及用戶組

到此mysql卸載完成!

 

4、從 mysql 官網下載並上傳 mysql安裝包

  1. 下載 mysql 安裝包

     

  2. 上傳安裝文件到 linux 系統

5、將MySQL安裝到/usr/local/mysql下

  1. 解壓安裝包,並移動至/usr/local目錄下

    解壓 mysql 的 gz 安裝包:  [root@localhost ~]#  tar -zvxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

    /usr/local 目錄下建立文件夾存 mysql:[root@localhost ~]# mkdir /usr/local/msyql

    將文件移動到 /usr/local 目錄下,並重命名文件夾:[root@localhost ~]# mv mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz/*  /usr/lcoal/mysql

            新建data目錄:[root@localhost ~]# mkdir /usr/local/mysql/data

  2. 添加系統用戶

    添加 mysql 組和 mysql 用戶:

      添加 mysql 組:[root@localhost ~]# groupadd mysql

      添加 mysql 用戶:[root@localhost ~]# useradd mysql -g mysql

                  將/usr/local/mysql的素有者及所屬組改成mysql:[root@localhost ~]# chown -R msyql.mysql /usr/local/mysql                                            

      擴展:

        查看是否存在 mysql 組:[root@localhost ~]# more /etc/roup | grep mysql

        查看 msyql 屬於哪一個組:[root@localhost ~]# groups mysql

        查看當前活躍的用戶列表:[root@localhost ~]# w

  3. 檢查是否安裝了 libaio

    [root@localhost pub]# rpm -qa | grep libaio

    若沒有則安裝

      版本檢查:[root@localhost pub]# yum search libaio

      安裝:[root@localhost pub]# yum -y install libaio

  4. 安裝 mysql

    進入安裝 mysql 軟件目錄:[root@localhost ~]# cd /usr/local/mysql/

      5. 初始化 mysqld

                 [root@localhost mysql]# /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize

    

    

 六、配置 mysql       

         1. 配置文件:

      [root@localhost mysql]# vim /etc/my.cnf   

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8
# 取消密碼驗證
skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# skip-grant-tables
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

         2. 設置開機啓動 

     a. 複製啓動腳本到資源目錄:[root@localhost mysql]# cp ./support-files/mysql.server /etc/init.d/mysql

     b. 增長 mysqld 服務控制腳本執行權限:[root@localhost mysql]# chmod +x /etc/init.d/mysql

     c. 將 mysqld 服務加入到系統服務:[root@localhost mysql]# chkconfig mysql on

     d. 檢查mysqld服務是否已經生效:[root@localhost mysql]# chkconfig --list mysql

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

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

      代表mysqld服務已經生效,在二、三、四、5運行級別隨系統啓動而自動啓動,之後可使用 service 命令控制 mysql 的啓動和中止。

      查看啓動項:chkconfig --list | grep -i mysql

      刪除啓動項:chkconfig --del mysql

    e. 啓動 mysqld:[root@localhost mysql]# service mysql start

         3. 設置密碼

             登陸(因爲/etc/my.cnf中設置了取消密碼驗證,因此此處密碼任意)

             [root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p

               >>use mysql 

         >>update user set authentication_string=password('你的密碼') where user='root';

         >>flush privileges;

         >>exit;

           4. 將/etc/my.cnf中的skip-grant-tables刪除,登陸再次設置密碼(不知道爲啥若是再也不次設置密碼就操做不了數據庫了)               


  
  5.設置遠程鏈接 
/user/local/mysql/bin/mysql -uroot -p
>>user mysql
>> update user set host='%' where user = 'root';
>> flush privileges;
>> exit;/usr/local/mysql/bin/mysql -u root -p >>ALTER USER 'root'@'localhost' IDENTIFIED BY '修改後的密碼'; >>exit;
 6.環境變量配置

     將mysql的bin目錄加入PATH環境變量,編輯 /etc/bashrc文件:[root@localhost mysql]# vim /etc/bashrc

1
2
MYSQL_HOME=/usr/local/mysql/bin
export PATH=$PATH:${MYSQL_HOME}

    執行命令使其生效:[root@localhost mysql]# source /etc/bashrc

    用 export 命令查看PATH值:[root@localhost mysql]# echo $PATH

7、登陸 mysql

  1. 測試登陸

    登陸 mysql:[root@localhost mysql]# mysql -uroot -p(登陸密碼爲初始化的時候顯示的臨時密碼)

    初次登陸須要設置密碼才能進行後續的數據庫操做:SET PASSWORD = PASSWORD('123456');(密碼設置爲了123456) 

    修改密碼爲 password:update user set authentication_string=PASSWORD('password') where User='root';

  2. 防火牆端口的設置,便於遠程訪問

    [root@localhost ~]$ firewall-cmd --zone=public --add-port=3306/tcp --permanent

    [root@localhost ~]$ firewall-cmd --reload

  開啓防火牆mysql3306端口的外部訪問

  CentOS升級到7以後,使用firewalld代替了原來的iptables。下面記錄如何使用firewalld開放Linux端口

  --zone : 做用域,網絡區域定義了網絡鏈接的可信等級。

    這是一個一對多的關係,這意味着一次鏈接能夠僅僅是一個區域的一部分,而一個區域能夠用於不少鏈接

  --add-port : 添加端口與通訊協議,格式爲:端口/通信協議,協議是tcp 或 udp

  --permanent : 永久生效,沒有此參數系統重啓後端口訪問失效

  5.3 使用 SQLyog 遠程鏈接出現不容許鏈接問題:

    首先使用 dos 窗口 ping 一下 linux,排除網絡連通問題,其次使用 SQLyog 鏈接測試一下。

    解決方法:登陸 linux mysql 在用戶管理表新增用戶賬號

      mysql> use msyql 

      mysql> create user 'user-name'@'ip-address' identified by 'password';(紅色標記爲須要修改的地方)

    其餘方案:

      受權root用戶能夠進行遠程鏈接,注意替換如下代碼中的「password」爲 root 用戶真正的密碼,

      另外請注意若是你的root用戶設置的是弱口令,那麼很是不建議你這麼幹!:   

1
2
mysql> grant all privileges  on  *.* to root @"%"  identified  by  "password"  with grant option;
mysql> flush privileges;
相關文章
相關標籤/搜索