ubuntu18.04上安裝配置MySQL的詳細介紹

本篇文章主要介紹在ubuntu18.04上安裝配置MySQL的詳細介紹

主要涉及到的問題
  1. MySQL介紹

主要內容爲以下兩點:
0.1 MySQL簡要介紹
0.2 MySQL版本說明,以及如何獲取軟件源

  1. Ubuntu安裝mysql

主要內容:1.1 通過apt-get下載安裝mysql
     1.2 設置用戶密碼
       1.2.1 怎麼給用戶設置簡單密碼?
       1.2.2 修改用戶密碼
拓展介紹:MySQL 5.7已經引入的密碼強度驗證插件validate_password。
主要解決問題:給Ubuntu上的MySQL設置root用戶密碼,以及設置密碼時的報錯問題
解決報錯:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements`

  1. 配置MySQL,給用戶賦予遠程訪問權限

2.1 配置遠程訪問數據庫權限:grant all privileges on
2.2 修改配置文件

0. MySQL介紹
0.1 MySQL介紹:

MySQL是一個跨平臺的開源關係型數據庫管理系統(Database Management System),跟Oracle,SQL Server相比,MySQL屬於輕量級的DBMS,在中小型網站開發上使用較多。而且是開源的。

0.2 MySQL版本及軟件源獲取

準備安裝的MySQL 版本:截止文章的發表,MySQL 8.0是最新推出的穩定發佈(GA)版本 ,
本篇文章採用MySQL官方的上一個GA發佈系列5.7
MySQL 5.7 官方下載鏈接
https://dev.mysql.com/downloads/mysql/5.7.html#downloads

1. Ubuntu安裝mysql
1.1 通過apt-get下載安裝mysql:

安裝環境:Vmware上安裝的Linux系統:Ubuntu18.04
無需下載安裝包,直接使用apt-get命令進行安裝MySQL

  1. sudo apt-get install mysql-server
  2. apt-get isntall mysql-client
  3. sudo apt-get install libmysqlclient-dev

注:截止博客發表之時,這樣的方式安裝是的MySQL5.7版本

安裝之後可以直接使用MySQL的root用戶免密登錄進入MySQL: mysql -u root -p-u 代表登錄的用戶名 -p表示登錄的密碼
上面的命令回車之後會提示輸入密碼,Enter password
不輸入內容,直接回車,這樣就免密登錄進去mysql了。

注:這裏需要注意的是,登錄mysql時如果輸入上面的命令行,無法免密登錄進入mysql,那麼嘗試命令前面加上sudo ,如下
sudo mysql -u root -p

在這裏插入圖片描述
因爲操作系統版本以及軟件版本的原因,Ubuntu18.04安裝MySQL5.7的時候,並沒有彈出提示設置密碼的窗口,因此我們免密登錄進去之後,先自己去給root用戶設置密碼

1.2 設置用戶密碼
1.2.1 怎麼給用戶設置簡單密碼?

在完成用戶密碼設置之前。先了解一個必要的內容,所謂知其然且知其所以然:

拓展介紹: 密碼強度驗證插件validate_password
設置密碼之前,我們要了解一下MYSQL的內置密碼插件validate_password:
5.7版本的MySQL已經引入了密碼強度驗證插件validate_password,對密碼的設置會有一定的要求:就是說會驗證設置的密碼是否符合當前的已設置的密碼強度規則。

當前的密碼強度規則可以通過mysql的幾個全局變量看到,查看如下與密碼有關的全局變量:
在進入mysql中後,輸入 show variables like ''validate_password% ;
在這裏插入圖片描述
這些相關變量有什麼含義呢?正如我們在網站上設置密碼時經常提示那樣,有時候密碼必須要求足夠複雜,下面這些變量就是定義了密碼的設置必須符合的‘標準’:

變量名 含義
validate_password_policy 密碼強度等級
validate_password_length 密碼長度
validate_password_mixed_case_count 至少包含大小寫字母的個數
validate_password_number_count 至少包含數字的個數
validate_password_special_char_count 至少包含特殊字符的個數

着重要說的是validate_password_policy ,變量取值範圍: 0/LOW, 1MEDIUM, 2/STRONG ;MySQL中有關密碼強度檢查等級的這幾個取值的說明:

0 or LOW : length
1 or MEDIUM: length ; numeric ,lowercase/uppercase, and special characters
2 or STRONG : length; numeric, lowercase/uppercase, and special characters; dictionary file

MySQL默認情況下是MEDIUM,也就是1等級,必須要滿足密碼長度規定,而且設置密碼字符也需要滿足規定(也就是上面那幾個限制字符的變量的設置也需要滿足)。
所以上圖的密碼配置中我的密碼必須是長度爲8,且必須至少包含1個大小寫字母,1個數字,1個特殊字符
是不是太複雜了。每次登陸的時候都要輸入那麼複雜的密碼,着實不太方便!那麼問題來了,怎麼設置簡單密碼呢?
如果想要簡單的設置密碼,那麼可以直接在mysql中輸入命令,修改這幾個全局變量的值,這是臨時的修改密碼強度規則,以完成簡單密碼的設置;
set global validate_password_policy=1;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=0;
set global validate_password_special_char_count=0;
set global validate_password_length=6;
經過上面的變量修改之後,我設置密碼的時候只需要6個任意字符的密碼就能設置成功了。自己學習MySQL的時候,可以按照這樣的方式把密碼設置成‘123456’,這樣在以後使用的時候會方便很多。
在這裏插入圖片描述
注:這種修改變量的方式是臨時的,僅在此次登錄MySQL修改密碼的時候有效,密碼可以設置成簡單密碼。但是密碼強度規則在下次重新啓動MySQL時仍然存在,也就是說下次有關密碼設置時,如果想要調整密碼強度的規則,仍然需要修改這些變量

瞭解上面的情況之後,我們就知道了自己設置密碼的時候,需要滿足的規則。在設置密碼的時候,按照規則就能成功設置,否則MySQL在密碼強度等級檢查的時候,會因爲不符合而導致密碼設置失敗。
通常會在有關設置密碼的時候報錯,信息如下:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 這種錯誤,都是密碼強度規則不符的原因,查看一下自己當前密碼強度規則,按照規則修改密碼,或者是修改自己想要的規則再設置密碼,通過上面的說明,應該都能解決了。

1.2.2 修改用戶密碼

好了,介紹完MYSQL的密碼機制之後,接下來我們來修改root用戶的密碼了:

進入到mysql 我們先看一下當前有哪些數據庫:show databases ;
在這裏插入圖片描述
進入到mysql數據庫中:use mysql ;
mysql數據庫下有一張表user,存放的是MySQL用戶的相關信息,登錄名和登錄密碼都在這張表中。

注:有的MySQL版本,user表的密碼字段是password,
有的密碼字段是authentication_string,修改密碼的時候可以先檢查一下自己user表的密碼字段是哪個,然後再進行修改。

我安裝的MySQL5.7版本的密碼字段是authentication_string,我們先看一下當前的user表數據:
select user,authentication_string, plugin from user;
下圖是我的user表查出的用戶信息,
在這裏插入圖片描述
剛安裝的時候,我的root的plugin字段的值是:auth_socket
plugin是插件的意思,把插件修改爲mysql本地的:mysql-native-password
update user set plugin='mysql_native_password' where user='root';
root的初始authentication_string字段爲空,更改密碼操作如下:執行下面的SQL語句把root的登錄密碼改爲123456。
update user set authentication_string=password('123456') where user='root';

上面的操作密碼的修改已經成功,如果我們只是想要修改密碼,那麼上面操作完之後,直接執行下面語句刷新權限配置:flush privileges; 然後在Ubuntu終端窗口重啓數據庫服務即可使用新設置的密碼登錄:service mysql restart
如果我們還要配置遠程訪問權限,就不必要現在刷新權限配置以及重啓服務,繼續下面操作

2 配置MySQL,給用戶賦予遠程訪問權限

因爲我們要在Windows上使用SQLyog連接虛擬機上的Ubuntu的MySQL,因此我們接下來要配置MySQL使其能夠被遠程訪問。

2.1 給用戶對應某些庫的遠程訪問權限: grant all privileges on

給用戶對應某些庫的遠程訪問權限:
grant all privileges on 數據庫名.表名 to ‘用戶名’@‘IP地址’ identified by ‘用戶密碼’ with grant option;

用戶名:要賦予遠程訪問權限的用戶名,如root
用戶密碼:用戶名對應的密碼
IP地址:設置能夠遠程訪問的主機IP地址,如:localhost ,如果想要所有的IP都能遠程訪問,直接寫“%”
數據庫名 . 表名 :要通過用戶遠程訪問的數據庫名稱和其中的表名稱,所有數據庫用*,所有表用*,所有數據庫的所有表 “*.* ”

我要使用windows上的SQLyog通過ubuntu上MySQL的root用戶遠程訪問到所有數據庫的所有表,執行以下語句完成遠程權限配置:
grant all privileges on *.* to root@'%' identified by '123456' WITH GRANT OPTION;

#所有IP都能通過用戶root以及其對應的密碼訪問所有的數據庫
#123456是我之前設置的root的登錄密碼
注意:有時候我們書寫的密碼確實是root之前設置的密碼,但是因爲上面提到的‘密碼強度等級檢查’grant all privileges on也會涉及到ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 的錯誤,這時候我們同樣需要按照上面提及的臨時修改驗證規則的方法,將驗證規則設置爲符合自己現有密碼,這樣執行grant all privileges on語句就不會報這個錯誤了。

上面操作完之後,
0 .我們在mysql執行下面語句刷新權限配置:flush privileges;
1.接着退出mysql: exit,回到Ubuntu終端。
2.然後在ubuntu輸入以下命令終端重啓數據庫服務 :service mysql restart

2.2 修改配置文件

然後我們需要修改mysql配置文件,配置文件路徑:/etc/mysql/mysql.conf.d/mysqld.cnf

我們可能修改的地方爲:配置文件中的bindaddress 的參數和skip-networking 配置

我這裏使用vim 直接打開並編輯配置文件,sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

  1. 註釋掉bindaddress這一行 或者將後面的ip改爲0.0.0.0: bind-address = 0.0.0.0

bindaddress : 配置哪些ip地址能訪問到MYSQL服務器,最好註釋掉該參數或設置成爲你想配置的IP,比如自己window的IP地址,註釋掉這一行的話,那麼所有的IP都能訪問到。

在這裏插入圖片描述

  1. 另外如果我們配置文件中之前設置了skip-networking,那麼同樣需要註釋掉,沒有的話就不必管

skip-networking : 將個參數配置是指示所有TCP/IP端口都不被監聽,這樣的話除了本機,其他IP客戶端都無法用網絡連接到mysql服務器,註釋掉這一行,那麼所有的IP都能訪問到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章