由於公司的系統在內網下,沒有網際網路,所以需要離線安裝MySQL,經過兩天摸索,終於安裝成功。把安裝過程以及遇到的報錯問題和解決方案整理了一下,方便日後使用,也希望能給大家提供點幫助。
安裝環境:CentOS7
安裝版本:MySQL5.7
一、安裝過程
-
解除安裝系統自帶的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 |
-
下載安裝包
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 |
-
進行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 |
安裝成功
-
資料庫初始化
[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;
Query OK, 0 rows affected (0.00 sec)之後再想修改密碼時:
mysql> use mysql;
Database changedmysql> 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;
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)
-
加入開機自啟
[root@guchen ~]# systemctl enable mysqld;
-
設定防火牆開啟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