Linux下Centos7以rpm方式離線安裝MySQL5.7教程以及部分報錯解決方案


由於公司的系統在內網下,沒有互聯網,所以需要離線安裝MySQL,經過兩天摸索,終於安裝成功。把安裝過程以及遇到的報錯問題和解決方案整理了一下,方便日后使用,也希望能給大家提供點幫助。

 

安裝環境:CentOS7

安裝版本:MySQL5.7

一、安裝過程

  1. 卸載系統自帶的mariadb-libs

[root@centos-linux etc]# rpm -qa|grep mariadb

mariadb-libs-5.5.60-1.el7_5.x86_64

[root@ centos-linux etc]# rpm -e -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps

  1. 下載安裝包

mysql-community-libs-5.7.25-1.el7.x86_64.rpm

https://dev.mysql.com/downloads/file/?id=482674

mysql-community-common-5.7.25-1.el7.x86_64.rpm

https://dev.mysql.com/downloads/file/?id=482678

mysql-community-server-5.7.25-1.el7.x86_64.rpm

https://dev.mysql.com/downloads/file/?id=482679

mysql-community-client-5.7.25-1.el7.x86_64.rpm

https://dev.mysql.com/downloads/file/?id=482677

尋找下載地址的教程:

https://blog.csdn.net/qq_37936542/article/details/79498905

這個是我下載整理好的安裝包,可以直接拿來用

鏈接:https://share.weiyun.com/5vO8ppp 密碼:qdeixz

 

  1. 進行rpm安裝

將rpm安裝包放到自己的目錄下

運行以下命令,自動根據依賴安裝

[root@ centos-linux etc]# rpm -Uvh *.rpm --nodeps --force

查看安裝情況:

[root@guchen mysql5.7]# rpm -qa|grep mysql

mysql-community-client-5.7.25-1.el7.x86_64

mysql-community-common-5.7.25-1.el7.x86_64

mysql-community-libs-5.7.25-1.el7.x86_64

mysql-community-server-5.7.25-1.el7.x86_64

安裝成功

  1. 數據庫初始化

[root@guchen mysql5.7]# mysqld --initialize --user=mysql

數據庫初始化有時候反應會比較慢,請耐心等待。初始化成功后會生成一個隨機密碼

使用以下命令查看生成的密碼

[root@guchen mysql5.7]# grep 'temporary password' /var/log/mysqld.log

 

  1. 啟動數據庫服務

[root@guchen mysql5.7]# systemctl start mysqld.service

  1. 修改密碼

    使用以下命令查看之前生成的密碼

    [root@guchen lib]# grep 'temporary password' /var/log/mysqld.log

    2019-03-21T16:08:05.650649Z 1 [Note] A temporary password is generated for root@localhost: S?Iioun;3+ay

    登陸mysql數據庫,登陸時,復制以上生成的密碼即可,藍色部分為生成的密碼

    mysql -u root -p

    設置新密碼

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';

    Query OK, 0 rows affected (0.00 sec)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    之后再想修改密碼時:

    mysql> use mysql;
    Database changed

    mysql> set password for root@'%' = password('新密碼');

    Query OK, 0 rows affected, 1 warning (0.00 sec)

    mysql> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

    mysql> exit

    上面紅色部分,如果是localhost則修改的是只能供服務器本地使用的賬戶,而'%'則是已設置好可遠程連接、不限制訪問ip的賬戶

    上面藍色部分,是賬戶名

  2. 設置遠程連接

    登陸mysql數據庫    

    mysql -u root -p

    查看user

    mysql> use mysql;
    Database changed

    設置遠程連接

    mysql> grant all privileges  on *.* to root@'%' identified by "password";
    Query OK, 0 rows affected (0.00 sec)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> select host,user from user;
    +-----------+---------------+

    | host | user |

    +-----------+---------------+

    | % | root |

    | localhost | mysql.session |

    | localhost | mysql.sys |

    | localhost | root |

    +-----------+---------------+

    4 rows in set (0.00 sec)

     

  3. 加入開機自啟

    [root@guchen ~]# systemctl enable mysqld;

  4. 設置防火牆開啟3306端口

    ##Centos7 防火牆打開端口號

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

     

    #下面3行是參數說明

    #–zone                 #作用域

    #–add-port=80/tcp        #添加端口,格式為:端口/通訊協議

    #–permanent             #永久生效,沒有此參數重啟后失效

     

    #重啟防火牆后看看是否生效

    firewall-cmd --reload        #重啟firewall

    firewall-cmd --zone=public --list-ports    #查看已經開放的端口

     

     

    #如果想永久停止防火牆,執行下面操作

    systemctl stop firewalld.service #停止firewall

    systemctl disable firewalld.service #禁止firewall開機啟動

     

    #查看防火牆狀態

    firewall-cmd --state        #查看默認防火牆狀態(關閉后顯示notrunning,開啟后顯示running)

     

    二、遇到過報錯、問題

    1、初始化失敗

    初始化失敗,報錯以下錯誤

    [root@guchen mysql]# mysqld --initialize --user=mysql

    2019-03-21T16:06:26.485888Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.

    2019-03-21T16:06:26.485956Z 0 [ERROR] Aborting

    是因為mysql數據庫已經進行初始化了,所以不能用這種方式再進行初始化用戶了,因為mysql在初始化的時候會自動創建一個root用戶的。

    解決方法:

    在mysql的配置文件中找到數據庫的目錄:

    [mysqld]

    datadir=/var/lib/mysql

    socket=/var/lib/mysql/mysql.sock

    移動(備份)數據庫文件

    首先要保證mysql處於停止狀態,然后

    [root@guchen mysql]# cd /var/lib/

    [root@guchen lib]# mv mysql mysql_bak

    然后重新初始化即可

    [root@guchen mysql5.7]# mysqld --initialize --user=mysql

     

    2、服務啟動失敗

    結果報錯

    Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

    解決方法:

    [root@guchen mysql5.7]# vim /etc/sysconfig/selinux

    將'SELINUX =enforcing'更改為'SELINUX =disabled'

    然后reboot重啟linux

    如果selinux文件中本來就是'SELINUX =disabled',請使用如下命令,查看錯誤日志尋找其他解決方法

    [root@guchen ~]# vim /var/log/mysqld.log

    2019-03-21T14:58:32.879474Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

    解決方法:

    [root@guchen ~]# vim /etc/my.cnf

    在 vi /etc/my.cnf 文件中加上 : explicit_defaults_for_timestamp=true 。保存后再次啟動就可以了

    log-error=/var/log/mysqld.log

    pid-file=/var/run/mysqld/mysqld.pid

    explicit_defaults_for_timestamp=true


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM