-------------
1. Ubuntu換源
ubuntu 20.04系統自帶源直接安裝是Mysql 8.0,我要安裝MySQL 5.7的版本的所以先進行換源。
1.1 備份原來的sorce檔案
1 |
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old |
1.2 修改sources.list檔案
1 |
sudo vim /etc/apt/sources.list |
我選擇的是清華映象源。將sources.list內容清空,然後選擇一個源貼上到sources.list,儲存退出。
1.3 更新映象源和軟體
2. 安裝mysql
2.1 apt-get install 方式安裝
這種方式需要伺服器能聯網
04 |
sudo apt-get install mysql-server-5.7 |
07 |
sudo apt-get install mysql-client-5.7 |
10 |
sudo apt install libmysqlclient-dev |
安裝時需要輸入兩次mysql root使用者的密碼(此密碼需要記住)
安裝完成後檢視mysql版本和服務
2 |
netstat -tap | grep mysql |
如上圖所示說明安裝成功。
2.2 deb安裝包方式安裝
這種安裝方式伺服器能聯網或不能聯網都可以
以下安裝使用到的包可以自己去下載,也可以使用我下載好的。
連結: https://pan.baidu.com/s/1lJq7hZH-X35f5gC-A-URiQ
提取碼: gxfk
1)下載deb安裝包
安裝包可以在伺服器裡直接獲取或者自己去官網下載
4 |
# 也可以直接將網址貼上到瀏覽器下載安裝壓縮包 |
自己去官網下載,選擇好mysql版本和作業系統版本然後點選下載。
網址:https://downloads.mysql.com/archives/community/
2)使用deb包進行安裝
將下載好的mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar
壓縮包匯入linux伺服器,然後進行下面的操作。
03 |
mv mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar ./mysql5.7.31 |
07 |
sudo tar -vxf mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar |
10 |
libmysqlclient20_5.7.31-1ubuntu18.04_amd64.deb |
11 |
mysql-client_5.7.31-1ubuntu18.04_amd64.deb |
12 |
mysql-community-source_5.7.31-1ubuntu18.04_amd64.deb |
13 |
mysql-server_5.7.31-1ubuntu18.04_amd64.deb |
14 |
mysql-common_5.7.31-1ubuntu18.04_amd64.deb |
15 |
mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb |
16 |
libmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.deb |
17 |
mysql-community-client_5.7.31-1ubuntu18.04_amd64.deb |
18 |
mysql-community-server_5.7.31-1ubuntu18.04_amd64.deb |
19 |
libmysqld-dev_5.7.31-1ubuntu18.04_amd64.deb |
20 |
mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb |
23 |
sudo rm -f mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb |
24 |
sudo rm -f mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb |
用dpkg進行安裝
2 |
sudo dpkg -i mysql-*.deb |
結果報錯了_^^
報錯的意思是缺少 2個包 libtinfo5
和 libmecab2
,那就安裝這兩個包,如果還缺少其他包,按照下面的步驟安裝即可。
2 |
sudo apt-get install libtinfo5 |
3 |
sudo apt-get install libmecab2 |
伺服器不能聯網時就自己去下載然後上傳到伺服器
下載網址 https://ubuntu.pkgs.org/
2 |
[admin0@Ubuntu20:/home/admin0]$ uname -m # 檢視硬體架構 |
將Binary Package對應的網址複製到瀏覽器即可下載,然後將下載好的 libtinfo5
和 libmecab2
包匯入伺服器進行安裝。
1 |
sudo dpkg -i libtinfo5_6.2-0ubuntu2_amd64.deb |
2 |
sudo dpkg -i libmecab2_0.996-10build1_amd64.deb |
3 |
sudo dpkg -i mysql-*.deb |
提示輸入2次root密碼,然後安裝成功
安裝完成後檢視mysql版本和服務
2 |
netstat -tap | grep mysql # 檢視mysql服務 |
如上圖所示說明安裝成功。
3.新建使用者並賦權
3.1 未設定或忘了密碼解決辦法
02 |
sudo service mysql stop |
04 |
# 修改MySQL的登入設定,暫時不校驗登陸密碼 |
05 |
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf |
07 |
# 將[mysqld]下的“skip-external-locking”註釋掉 |
08 |
# 新增 “skip-grant-tables” 然後儲存退出 |
10 |
================================================ |
13 |
pid-file = /var/run/mysqld/mysqld.pid |
14 |
socket = /var/run/mysqld/mysqld.sock |
17 |
datadir = /var/lib/mysql |
19 |
lc-messages-dir = /usr/share/mysql |
20 |
#skip-external-locking |
22 |
================================================= |
25 |
sudo service mysql restart |
31 |
update mysql.user set authentication_string=password('111222333') where user='root'; |
37 |
# 將[mysqld]下新增的“skip-grant-tables” 刪除 |
38 |
# 將“skip-external-locking”的註釋放開然後儲存退出 |
39 |
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf |
41 |
================================================ |
44 |
pid-file = /var/run/mysqld/mysqld.pid |
45 |
socket = /var/run/mysqld/mysqld.sock |
48 |
datadir = /var/lib/mysql |
50 |
lc-messages-dir = /usr/share/mysql |
52 |
================================================= |
55 |
sudo service mysql restart |
58 |
mysql -u使用者名稱 -p密碼 資料庫名 |
60 |
mysql -uroot -p111222333 mysql |
3.2 登陸mysql檢視資訊
02 |
mysql -u使用者名稱 -p密碼 資料庫名 |
04 |
mysql -uroot -p111222333 mysql |
08 |
Enter password: “root使用者密碼” |
09 |
mysql> use mysql # 選擇要操作的資料庫 |
35 |
# 檢視所有使用者的 使用者名稱、可登陸主機、身份驗證外掛、密碼 |
36 |
select user,host,plugin,authentication_string from user; |
41 |
# 檢視任意使用者許可權(後面說許可權的具體含義) |
42 |
show grants for root@localhost; |
3.3 建立及刪除資料庫和使用者
02 |
mysql -uroot -p111222333 mysql |
05 |
create database "資料庫名" charset="資料庫編碼"; |
07 |
create database pydb charset=utf8; |
10 |
create user "使用者名稱"@"IP地址" identified by "密碼"; |
12 |
create user 'test0'@'localhost' identified by 'test0111'; |
20 |
drop user '使用者名稱'@'ip地址'; |
22 |
drop user 'test0'@'localhost'; |
3.4 給使用者賦許可權
02 |
show grants for test0@localhost; |
04 |
顯示:[GRANT USAGE ON *.* TO 'test0'@'localhost'] |
08 |
mysql -utest0 -ptest0111 pydb |
10 |
報錯提示無權操作:[ERROR 1044 (42000): Access denied for user 'test0'@'localhost' to database 'pydb'] |
12 |
# 使用root使用者給test0使用者賦權 |
13 |
grant all privileges on '資料庫名'.'表名' to '使用者名稱'@'IP地址' identified by "密碼" with grant option; |
16 |
mysql> grant all privileges on pydb.* to 'test0'@'localhost' identified by 'test0111' with grant option; |
19 |
mysql> grant all privileges on pydb.* to 'test0'@'%' with grant option; |
22 |
mysql> flush privileges; |
25 |
show grants for 'test0'@'localhost'; |
26 |
回顯:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'localhost' WITH GRANT OPTION] |
29 |
show grants for 'test0'@'%'; |
30 |
回顯:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'%' WITH GRANT OPTION] |
31 |
許可權都新增成功了,現在本地客戶端和遠端客戶端都擁有了登陸test0使用者操作pydb資料庫下的所有表的許可權了。 |
35 |
all privileges: 賦權型別,all privileges表示所有許可權。也可以賦值具體的許可權如:select、update、create、drop等。 |
36 |
on: 表示許可權要賦給哪個資料庫的哪個表,*.* 表示所有資料庫的所有表。 |
37 |
to: 表示許可權要賦給哪個使用者,格式:”使用者名稱”@”登入IP或域名”。localhost表示本機客戶端可登入此使用者, %表示任何主機客戶端都可以登入此使用者,如果配的是具體ip例如'使用者名稱'@'192.168.113',表示只允許192.168.113這個主機客戶端登入此使用者。 也可以配置IP段例如'使用者名稱'@'192.168.%' |
38 |
identified by: 設定此使用者的登入密碼,也可以不設定。 |
39 |
with grant option: 表示允許此使用者將自己的許可權授權給其它使用者。 |
40 |
注意: grant新增的許可權是自動疊加的,比如第一次添加了select許可權後面再新增insert許可權,那麼此使用者就擁有select和insert許可權。如果此使用者已經擁有所有許可權,再新增select許可權則此使用者還是擁有all privileges所有許可權。 |
43 |
revoke insert on '資料庫名'.'表名' from '使用者名稱'@'IP地址'; |
45 |
revoke insert on pydb.* from 'test0'@'localhost'; |
48 |
revoke all on pydb.* from 'test0'@'localhost'; |
51 |
mysql> flush privileges; |
所有許可權包含很多:[SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,REFERENCES,INDEX,ALTER,CREATE TEMPORARY TABLES,LOCK TABLES,EXECUTE,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,EVENT,TRIGGER]
實際使用過程中不建議賦所有許可權,需要哪個賦哪個就行。
關於許可權的詳情請參考mysql官方說明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html
3.5 使用者和資料庫及表關係圖
4. 資料庫的備份及恢復
02 |
mysqldump -uroot -p --all-databases > all.db |
05 |
mysqldump -uroot -p pydb > test1.db |
08 |
mysqldump -uroot -p pydb 表名1 表名2 表名n > test2.db |
10 |
# 備份指定資料庫排除某些表(排除表1 和 表2) |
11 |
mysqldump -uroot -p pydb --ignore-table=pydb.表1 --ignore-table=pydb.表2 > test3.db |
14 |
create database test charset=utf8; |
17 |
mysql -u root -p test < test1.db |
5. Navicat 遠端連線資料庫
5.1 修改本地監聽地址
02 |
netstat -an |grep 3306 |
03 |
# 前監聽的是本地迴環地址:tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN |
07 |
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf |
09 |
修改bind-address 的值為 bind-address = 0.0.0.0儲存退出。 |
10 |
也可以修改為本機ip,例如:bind-address = 192.168.111.10 |
13 |
sudo service mysql restart |
15 |
# 在遠端客戶端機器上測試下網路,telnet成功說明網路沒問題 |
16 |
telnet 192.168.111.10 3306 |
18 |
# 注意:阿里雲伺服器有埠限制,需要去配置下埠訪問規則開放3306埠 |
5.2 Navicat 遠端連線
自行下載Navicat並安裝。
02 |
[192.168.111.10]是你的mysql伺服器ip地址 |
04 |
telnet 192.168.111.10 3306 |
07 |
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf |
08 |
bind-address = 0.0.0.0 |
10 |
3.檢視使用者是否有遠端訪問許可權及密碼驗證外掛 |
11 |
select user,plugin from user; |
12 |
登陸使用者host的值: % 或 遠端客戶端ip |
13 |
登陸使用者plugin的值: mysql_native_password |
14 |
mysql5.7版本的密碼驗證外掛是 mysql_native_password |
17 |
grant all privileges on pydb.* to 'test0'@'%' identified with mysql_native_password by 'test0111'; |
19 |
# 如果使用者遠端訪問許可權存在,密碼驗證外掛不對,可只修改密碼驗證外掛 |
20 |
alter user 'test0'@'%' identified with mysql_native_password by '111222333'; |
23 |
mysql> flush privileges; |
6. 解除安裝mysql
02 |
1.sudo apt-get autoremove mysql* --purge |
03 |
2.sudo apt-get remove mysql-server |
04 |
3.sudo apt-get remove mysql-common |
07 |
sudo dpkg -l |grep mysql|awk '{print $2}' |sudo xargs dpkg -P |
08 |
sudo rm -rf /etc/mysql/ |
09 |
sudo rm -rf /var/lib/mysql |
13 |
sudo find / -name mysql |
本博文記錄內容我都自己操作過,如能幫助到需要的小夥伴,我將感到很榮幸,如有錯誤之處歡迎指正。
到此這篇關於Ubuntu 20.04 安裝和配置MySql5.7的文章就介紹到這了,更多相關Ubuntu 20.04 安裝MySql5.7內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!