因爲公司的系統在內網下,沒有互聯網,因此須要離線安裝MySQL,通過兩天摸索,終於安裝成功。把安裝過程以及遇到的報錯問題和解決方案整理了一下,方便往後使用,也但願能給你們提供點幫助。node
安裝環境:CentOS7mysql
安裝版本:MySQL5.7linux
[root@centos-linux etc]# rpm -qa|grep mariadb sql 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 --nodepsvim |
mysql-community-libs-5.7.25-1.el7.x86_64.rpm centos https://dev.mysql.com/downloads/file/?id=482674服務器 |
mysql-community-common-5.7.25-1.el7.x86_64.rpm session https://dev.mysql.com/downloads/file/?id=482678socket |
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 |
將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 |
安裝成功
[root@guchen mysql5.7]# mysqld --initialize --user=mysql |
數據庫初始化有時候反應會比較慢,請耐心等待。初始化成功後會生成一個隨機密碼
使用如下命令查看生成的密碼
[root@guchen mysql5.7]# grep 'temporary password' /var/log/mysqld.log |
[root@guchen mysql5.7]# systemctl start mysqld.service |
使用如下命令查看以前生成的密碼
[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; |
以後再想修改密碼時:
mysql> use mysql; 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的帳戶
上面藍色部分,是帳戶名
登錄mysql數據庫
mysql -u root -p |
查看user表
mysql> use mysql; |
設置遠程鏈接
mysql> grant all privileges on *.* to root@'%' identified by "password"; mysql> flush privileges; mysql> select host,user from user; | host | user | +-----------+---------------+ | % | root | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+---------------+ 4 rows in set (0.00 sec) |
[root@guchen ~]# systemctl enable mysqld; |
##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) |
初始化失敗,報錯如下錯誤
[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 |
結果報錯
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 |