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的使用者
此時在重新整理連線發現我們可以看到所有的表了