1. 程式人生 > 其它 >linux系統下(映象為centos7.6)使用rpm方式安裝MySql8

linux系統下(映象為centos7.6)使用rpm方式安裝MySql8

一、環境檢查

1、檢查是否安裝過mariadb

命令:rpm -qa | grep mariadb

2、刪除

命令:rpm -e --nodeps mariadb-libs(--nodeps排除依賴強制刪除,不加會報如下錯誤)

3、檢查一下是否安裝了mysql的依賴環境

命令:rpm -qa | grep libaio ;rpm -qa | grep net-tools

4、檢視/tmp資料夾許可權,tmp目錄指的是臨時目錄

命令:ll /

二、安裝

1、下載rpm檔案

下載地址:https://dev.mysql.com/downloads/mysql/,直接下載即可

2、將下載好的檔案解壓之後上傳到linux系統的/opt目錄下

3、按順序安裝以下的安裝包

第一個命令:rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm

第二個命令:rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm

第三個命令:rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm

第四個命令:rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm

第五個命令:rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm

4、檢視安裝版本

命令:mysqladmin --version

三、mysql的使用

1、初始化mysql

命令:mysqld --initialize --user=mysql

該命令執行完之後我們發現沒有任何輸出,那mysql是否初始化成功呢?我們需要檢視mysql的日誌

命令:cat /var/log/mysqld.log

我們在日誌中可以檢視到mysql的初始化密碼,如下

2、啟動mysql

命令:systemctl start mysqld

檢視mysql的狀態判斷是否啟動成功

命令:systemctl status mysqld

3、使用初始化密碼登入mysql

命令:mysql -uroot -p 鍵入回車 貼上日誌中的初始化密碼 鍵入回車

需要注意的是:mysql8使用初始化密碼登入資料庫是不具備任何許可權的,我們需要重新設定密碼才可以使用資料庫

4、修改密碼

命令:alter user 'root'@'localhost' identified by '自定義密碼';

quit退出然後重新登陸

5、修改字符集

命令:vim /etc/my.cnf

在最後一行新增 character_set_server=utf8

重啟mysql服務

命令:systemctl restart mysqld

(需要注意的是:如果在配置檔案修改之前建立了庫或者表,我們需要手動的更改之前的庫或者表所使用的的字符集;修改配置檔案之後建立的庫或者表則不需要)

以此延伸出來的面試問題:

mysql插入資料時出現中文亂碼如何解決?

答:修改mysql的配置檔案,在mysqld下面新增character_set_server=utf8,重啟mysql服務,之後建立的表在插入中文時就不會出現中文亂碼了。

對於已經存在的庫或者表我們需要手動的修改字符集。

修改資料庫字符集命令:alert database 庫名 character set ‘utf8’,

修改表字符集命令:alert table 表名 convert to character set ‘utf8’

6、遠端訪問資料庫

在以上的步驟中如果我們想用資料庫管理工具,如Navicat連線資料庫是不行的。

使用命令:select host,user, authentication_string from user;查詢使用者可以看到(需要先切換到mysql資料庫)

當前的四個使用者的連線地址都是本地。

此時我們可以使用命令:create user 使用者名稱 identified by 密碼來建立一個新使用者

此時在此檢視使用者可以看到新建立的使用者host為%(所有的遠端主機)

使用Navicat進行連線測試發現可以連線成功,但是所展示出來的表卻只有一個,這說明我們新建立的使用者沒有許可權。

可以使用命令:grant all privileges on *.* to 'cangfeng'@'%';來為我們建立的使用者授權

grant代表授權操作符

all privileges:所有許可權

on *.*:代表所有庫所有表

to ‘username’@‘%’:指向 host為% 名稱為username的使用者

此時在重新整理連線發現我們可以看到所有的表了