linux安裝mysql-8.0.21-1.el7.x86_64.rpm-bundle


本文參考https://blog.csdn.net/wudinaniya/article/details/81094578

一     查看linux操作系統版本和系統內核版本

1 [root@nfs_client ~]# cat /etc/redhat-release     查看操作系統版本
2 CentOS Linux release 7.5.1804 (Core) 
3 [root@nfs_client ~]# uname -r               查看系統內核版本
4 3.10.0-862.el7.x86_64
5  

二   下載對應版本的MySQL安裝文件

    1、下載地址;https://dev.mysql.com/downloads/mysql/

    2、選擇對應的Linux版本和x86/x64進行下載

   可以選擇 RPM Bundle,下載完記得解壓  tar -xvf xxx.tar

三 卸載舊版本的MySql (沒有的話,則跳過此步驟)

      1、查看舊版本MySql

rpm -qa | grep mysql
rpm -e --nodeps {-file-name}

 

有的系統可能不太一樣,沒有mysql-libs,而是mariadb-libs,此時要移除的則是mariadb-libs

 rpm -qa|grep mariadb

 yum remove mariadb-libs

 

四 安裝MySql 

 解壓之后的文件

 

 

 

使用命令rpm -ivh {-file-name}進行安裝操作。

按照依賴關系依次安裝rpm包 依賴關系依次為common→libs→client→server

注:ivh中, i-install安裝;v-verbose進度條;h-hash哈希校驗

 

在安裝 mysql-community-libs-5.7.22-1.el7.x86_64.rpm 時有可能會報錯:mysql依賴錯誤

 

 

解決:清除yum里所有mysql依賴包

[root@nfs_client tools]# rpm -qa|grep mysql
[root@nfs_client tools]# yum remove mysql-libs
 
注意:
有的系統可能不太一樣,沒有mysql-libs,而是mariadb-libs,此時要移除的則是mariadb-libs
[root@nfs_client tools]# rpm -qa|grep mariadb
[root@nfs_client tools]# yum remove mariadb-libs

注意細節:

1> 執行 yum remove mysql-libs   命令后,會自動刪除掉 /etc/ 下的 my.cnf 文件
2> 對於安裝mysql組件,只有安裝了 mysql-community-server-5.7.22-1.el7.x86_64.rpm 組件,才會:
a). 在 /etc/下生成 my.cnf 文件 和 my.cnf.d 文件夾


b). 在/var/lib/下生產以下三個文件夾

c). 在/var/log/ 下生成 mysqld.log 文件

d). 在/var/run/ 下生成 mysqld 目錄

個別情況:

個別情況1:

在阿里雲ECS雲服務器上安裝mysql5.7,當安裝 mysql-community-server-5.7.22-1.el7.x86_64.rpm 時報錯,報錯如下:

[root@i3467544tdsxfrZ ~]# rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm
warning: mysql-community-server-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
        libaio.so.1()(64bit) is needed by mysql-community-server-5.7.22-1.el7.x86_64
        libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.22-1.el7.x86_64
        libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.22-1.el7.x86_64

 

真正原因:

真正的原因是 MySQL依賴libaio,所以先要安裝libaio,我們通過 rpm -qa|grep libaio 命令查看一下,如圖:

經過對比發現,無法正常安裝mysql-community-server-5.7.22-1.el7.x86_64的服務器的確沒有安裝libaio

所以,解決法案就是:

安裝libaio

[root@iZbp1845cet96se1qmb5ekZ ~]# yum -y install libaio

安裝libaio后,再重新安裝一次mysql-community-server-5.7.22-1.el7.x86_64.rpm,此時就能正常安裝了

個別情況2:

比如解決了“個別情況1”,但在啟動mysql的時候,啟動不起來,或啟動后,去查找臨時密碼,使用命令沒反應。查看日志mysqld.log(可在/etc/my.cnf中查找到mysqld.log的配置位置),報如下錯誤,此時怎么解決?

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

此時,1>先通過rpm -e --nodeps xxx  卸載掉server,卸載后刪除datadir目錄,2>卸載后查看 /etc/my.cnf 中,datadir的配置情況,將datedir目錄刪除,3>最后通過命令rpm -ivh xxx 重新安裝server,此時就能正常使用mysql了

命令代碼如下:

[root@izbp1845cet96se1qmb5ekz ~]# rpm -e --nodeps mysql-community-server-5.7.22-1.el7.x86_64

[root@izbp1845cet96se1qmb5ekz ~]# cat /etc/my.cnf
xxxxxxxxxxxxx
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

xxxxxxxxxxxxxxx

[root@izbp1845cet96se1qmb5ekz ~]# cd /var/lib

[root@izbp1845cet96se1qmb5ekz lib]# rm -rf mysql

[root@izbp1845cet96se1qmb5ekz ~]# rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm

[root@izbp1845cet96se1qmb5ekz ~]# systemctl start mysqld.service
[root@izbp1845cet96se1qmb5ekz ~]# ps -ef|grep mysql
root      3306  1068  0 14:34 pts/0    00:00:00 mysql -uroot -p
mysql    27009     1  1 15:26 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root     27038 26239  0 15:27 pts/6    00:00:00 grep --color=auto mysql

 

五 登錄並創建MySql密碼

    1 啟動MySql

        安裝完后,使用命令 service mysqld start 或 systemctl start mysqld.service 啟動MySQL服務。(如果mysql服務無法啟動,就重啟一下系統)

systemctl start mysqld.service    啟動mysql
systemctl status mysqld.service  查看mysql狀態
systemctl stop mysqld.service   關閉mysql

查看mysql進程 ps -ef|grep mysql
查看3306端口 netstat -anop|grep 3306

 

 

 2 登陸mysql修改root密碼

        由於MySQL5.7.4之前的版本中默認是沒有密碼的,登錄后直接回車就可以進入數據庫,進而進行設置密碼等操作。其后版本對密碼等安全相關操作進行了一些改變,在安裝過程中,會在安裝日志中生成一個臨時密碼。

      怎么找到這個臨時密碼呢?

      使用:

grep 'temporary password' /var/log/mysqld.log

即可查詢到類似於如下的一條日志記錄:

 

 #o(YH0ff;i30即為登錄密碼。使用這個隨機密碼登錄進去,然后修改密碼,使用命令:

mysql -uroot -p

輸入密碼

 

 

執行下面的命令修改MySql root密碼

在5.6后,mysql內置密碼增強機制,低強度密碼會報錯:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

可能出現密碼不符合策略或過於簡單等提示,建議先使用如下密碼,稍后更改策略再換

 step1:更改策略和修改密碼長度

set global validate_password.policy=0set global validate_password.length=1;

不管設置  validate_password_length=1,還是2,3,4 ,‘有效密碼長度’這個參數的實際值都是4。超過4后設置是多少實際就是多少。

step2:從新設置密碼

alter user root@localhost identified by '123456';

 step3: 授予root用戶遠程訪問權限:

此時,雖然防火牆我時關着的,但root用戶只能用於本機訪問,不能用於遠程訪問,否則會報以下錯誤。因此,接下來要做的是授予root用戶遠程訪問權限。

查看當前授予過的權限:

use mysql;
select user,host from user;

 

不推薦直接使用root用戶通過外部訪問數據庫,建議創建用戶給予對應所需權限即可

step4.添加一個新用戶

create user '新用戶名'@'localhost' identified by '密碼';
//允許所有ip連接(用通配符%表示)
create user '新用戶名'@'%' identified by '密碼';授權用戶

step5.授權用戶

格式:GRANT privileges ON  databasename.tablename  TO  ‘username’@‘host’
例:給admin用戶授權study數據庫中所有表的所有操作權限
GRANT ALL ON *.* TO 'admin'@'%';
privileges:表示要授予什么權力,例如可以有 select ,insert 等,如果要授予全部權力,則填 ALL
databasename.tablename:表示用戶的權限能用在哪個庫的哪個表中,如果想要用戶的權限很作用於所有
的數據庫所有的表,則填 .,*是一個通配符,表示全部。
’username‘@‘host’:表示授權給哪個用戶。
step6:開放3306端口
此時外面遠程訪問還是訪問不到,因為我的防火牆沒有放開3306端口,
firewall-cmd --zone=public --add-port=3306/tcp --permanent 
firewall-cmd --reload

 我用的DataGrip連接會報錯

 

 我看網上很多人都在說加上serverTimezone=UTC,我的加上不行,最后我發現我要加上useSSL=false&allowPublicKeyRetrieval=true就可以了

 


免責聲明!

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



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