Ubuntu 20.04 安裝和配置MySql5.7的詳細(xì)教程
1. Ubuntu換源
ubuntu 20.04系統(tǒng)自帶源直接安裝是MySQL 8.0,我要安裝MySQL 5.7的版本的所以先進(jìn)行換源。
1.1 備份原來(lái)的sorce文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
1.2 修改sources.list文件
sudo vim /etc/apt/sources.list
我選擇的是清華鏡像源。將sources.list內(nèi)容清空,然后選擇一個(gè)源粘貼到sources.list,保存退出。
# 清華鏡像源 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
1.3 更新鏡像源和軟件
# 更新鏡像源 sudo apt-get update # 更新軟件 sudo apt-get upgrade
2. 安裝mysql
2.1 apt-get install 方式安裝
這種方式需要服務(wù)器能聯(lián)網(wǎng)
# 執(zhí)行下面安裝命令 # 安裝mysql5.7服務(wù)端 sudo apt-get install mysql-server-5.7 # 安裝mysql5.7客戶端 sudo apt-get install mysql-client-5.7 # 使用c/c++等語(yǔ)言操作mysql的動(dòng)態(tài)鏈接庫(kù),如果不需要可不安裝 sudo apt install libmysqlclient-dev
安裝時(shí)需要輸入兩次mysql root用戶的密碼(此密碼需要記住)


安裝完成后查看mysql版本和服務(wù)
mysql -V # 查看mysql版本 netstat -tap | grep mysql # 查看mysql服務(wù)

如上圖所示說(shuō)明安裝成功。
2.2 deb安裝包方式安裝
這種安裝方式服務(wù)器能聯(lián)網(wǎng)或不能聯(lián)網(wǎng)都可以
以下安裝使用到的包可以自己去下載,也可以使用我下載好的。
鏈接: https://pan.baidu.com/s/1lJq7hZH-X35f5gC-A-URiQ
提取碼: gxfk
1)下載deb安裝包
安裝包可以在服務(wù)器里直接獲取或者自己去官網(wǎng)下載
# 在服務(wù)器里直接獲取(服務(wù)器需要聯(lián)網(wǎng)) wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar # 也可以直接將網(wǎng)址粘貼到瀏覽器下載安裝壓縮包 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar
自己去官網(wǎng)下載,選擇好mysql版本和操作系統(tǒng)版本然后點(diǎn)擊下載。
網(wǎng)址:https://downloads.mysql.com/archives/community/
2)使用deb包進(jìn)行安裝
將下載好的mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar壓縮包導(dǎo)入linux服務(wù)器,然后進(jìn)行下面的操作。
# 新建目錄 mkdir mysql5.7.31 mv mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar ./mysql5.7.31 # 解壓 cd mysql5.7.31 sudo tar -vxf mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar # 解壓出來(lái)的deb安裝包如下: libmysqlclient20_5.7.31-1ubuntu18.04_amd64.deb mysql-client_5.7.31-1ubuntu18.04_amd64.deb mysql-community-source_5.7.31-1ubuntu18.04_amd64.deb mysql-server_5.7.31-1ubuntu18.04_amd64.deb mysql-common_5.7.31-1ubuntu18.04_amd64.deb mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb libmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.deb mysql-community-client_5.7.31-1ubuntu18.04_amd64.deb mysql-community-server_5.7.31-1ubuntu18.04_amd64.deb libmysqld-dev_5.7.31-1ubuntu18.04_amd64.deb mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb # 刪除2個(gè)測(cè)試相關(guān)的包 sudo rm -f mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb sudo rm -f mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb
用dpkg進(jìn)行安裝
# 用dpkg進(jìn)行安裝 sudo dpkg -i mysql-*.deb

結(jié)果報(bào)錯(cuò)了_^^

報(bào)錯(cuò)的意思是缺少 2個(gè)包 libtinfo5 和 libmecab2,那就安裝這兩個(gè)包,如果還缺少其他包,按照下面的步驟安裝即可。
# 服務(wù)器能聯(lián)網(wǎng)時(shí)直接安裝 sudo apt-get install libtinfo5 sudo apt-get install libmecab2
服務(wù)器不能聯(lián)網(wǎng)時(shí)就自己去下載然后上傳到服務(wù)器
下載網(wǎng)址 https://ubuntu.pkgs.org/
# 下載軟件包需要區(qū)分硬件架構(gòu) [admin0@Ubuntu20:/home/admin0]$ uname -m # 查看硬件架構(gòu) x86_64 # x86_64就是AMD64


將Binary Package對(duì)應(yīng)的網(wǎng)址復(fù)制到瀏覽器即可下載,然后將下載好的 libtinfo5 和 libmecab2包導(dǎo)入服務(wù)器進(jìn)行安裝。
sudo dpkg -i libtinfo5_6.2-0ubuntu2_amd64.deb sudo dpkg -i libmecab2_0.996-10build1_amd64.deb

# 再次用dpkg進(jìn)行安裝 cd mysql5.7.31 sudo dpkg -i mysql-*.deb
提示輸入2次root密碼,然后安裝成功

安裝完成后查看mysql版本和服務(wù)
mysql -V # 查看mysql版本 netstat -tap | grep mysql # 查看mysql服務(wù)

如上圖所示說(shuō)明安裝成功。
3.新建用戶并賦權(quán)
3.1 未設(shè)置或忘了密碼解決辦法
# 停止mysql服務(wù)
sudo service mysql stop
# 修改MySQL的登錄設(shè)置,暫時(shí)不校驗(yàn)登陸密碼
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 將[mysqld]下的“skip-external-locking”注釋掉
# 添加 “skip-grant-tables” 然后保存退出
例如:
================================================
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
#skip-external-locking
skip-grant-tables
=================================================
# 重啟mysql數(shù)據(jù)庫(kù)
sudo service mysql restart
# 免密登陸mysql數(shù)據(jù)庫(kù)
mysql -u root mysql
# 修改root密碼
update mysql.user set authentication_string=password('111222333') where user='root';
# 刷新生效
flush privileges;
# 還原MySQL的登錄設(shè)置
# 將[mysqld]下添加的“skip-grant-tables” 刪除
# 將“skip-external-locking”的注釋放開(kāi)然后保存退出
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
例如:
================================================
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
=================================================
# 重啟mysql數(shù)據(jù)庫(kù)
sudo service mysql restart
# 使用新密碼登陸mysql
mysql -u用戶名 -p密碼 數(shù)據(jù)庫(kù)名
# 例如:
mysql -uroot -p111222333 mysql
3.2 登陸mysql查看信息
# 直接登陸mysql mysql -u用戶名 -p密碼 數(shù)據(jù)庫(kù)名 # 例如: mysql -uroot -p111222333 mysql # 先登陸后面再輸入密碼和選擇數(shù)據(jù)庫(kù) mysql -u root -p Enter password: “root用戶密碼” mysql> use mysql # 選擇要操作的數(shù)據(jù)庫(kù) # 切換數(shù)據(jù)庫(kù) use 數(shù)據(jù)庫(kù)名; # 查看所有數(shù)據(jù)庫(kù) show databases; # 查看登陸數(shù)據(jù)庫(kù)中所有的表 show tables; # 查看數(shù)據(jù)表結(jié)構(gòu) desc 表名; # 查看登陸用戶名 select user(); # 查看登陸數(shù)據(jù)庫(kù)庫(kù)名 select database(); # 查看版本 select version(); # 顯示當(dāng)前時(shí)間 select now(); # 查看所有用戶的 用戶名、可登陸主機(jī)、身份驗(yàn)證插件、密碼 select user,host,plugin,authentication_string from user; # 查看當(dāng)前登錄用戶權(quán)限 show grants; # 查看任意用戶權(quán)限(后面說(shuō)權(quán)限的具體含義) show grants for root@localhost;
3.3 創(chuàng)建及刪除數(shù)據(jù)庫(kù)和用戶
# 使用root用戶登錄數(shù)據(jù)庫(kù) mysql -uroot -p111222333 mysql # 創(chuàng)建數(shù)據(jù)庫(kù) create database "數(shù)據(jù)庫(kù)名" charset="數(shù)據(jù)庫(kù)編碼"; # 例如: create database pydb charset=utf8; # 創(chuàng)建數(shù)據(jù)庫(kù)用戶 create user "用戶名"@"IP地址" identified by "密碼"; # 例如: create user 'test0'@'localhost' identified by 'test0111'; # 刪除數(shù)據(jù) drop database [數(shù)據(jù)庫(kù)名]; # 例如: drop database pydb; # 刪除數(shù)據(jù)庫(kù)用戶 drop user '用戶名'@'ip地址'; # 例如: drop user 'test0'@'localhost';
3.4 給用戶賦權(quán)限
# 查看用戶test0的權(quán)限 show grants for test0@localhost; 顯示:[GRANT USAGE ON *.* TO 'test0'@'localhost'] USAGE: 表示無(wú)權(quán)限用戶。 # 用test0用戶登錄pydb數(shù)據(jù)庫(kù) mysql -utest0 -ptest0111 pydb 報(bào)錯(cuò)提示無(wú)權(quán)操作:[ERROR 1044 (42000): Access denied for user 'test0'@'localhost' to database 'pydb'] # 使用root用戶給test0用戶賦權(quán) grant all privileges on '數(shù)據(jù)庫(kù)名'.'表名' to '用戶名'@'IP地址' identified by "密碼" with grant option; # 例如設(shè)置本地客戶端訪問(wèn)此用戶: mysql> grant all privileges on pydb.* to 'test0'@'localhost' identified by 'test0111' with grant option; # 設(shè)置遠(yuǎn)程任意客戶端訪問(wèn)此用戶: mysql> grant all privileges on pydb.* to 'test0'@'%' with grant option; # 刷新權(quán)限 mysql> flush privileges; # 查看本地權(quán)限 show grants for 'test0'@'localhost'; 回顯:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'localhost' WITH GRANT OPTION] # 查看遠(yuǎn)程權(quán)限 show grants for 'test0'@'%'; 回顯:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'%' WITH GRANT OPTION] 權(quán)限都添加成功了,現(xiàn)在本地客戶端和遠(yuǎn)程客戶端都擁有了登陸test0用戶操作pydb數(shù)據(jù)庫(kù)下的所有表的權(quán)限了。 # 賦權(quán)命令解釋 grant: 賦權(quán)關(guān)鍵字 all privileges: 賦權(quán)類型,all privileges表示所有權(quán)限。也可以賦值具體的權(quán)限如:select、update、create、drop等。 on: 表示權(quán)限要賦給哪個(gè)數(shù)據(jù)庫(kù)的哪個(gè)表,*.* 表示所有數(shù)據(jù)庫(kù)的所有表。 to: 表示權(quán)限要賦給哪個(gè)用戶,格式:”用戶名”@”登錄IP或域名”。localhost表示本機(jī)客戶端可登錄此用戶, %表示任何主機(jī)客戶端都可以登錄此用戶,如果配的是具體ip例如'用戶名'@'192.168.113',表示只允許192.168.113這個(gè)主機(jī)客戶端登錄此用戶。 也可以配置IP段例如'用戶名'@'192.168.%' identified by: 設(shè)置此用戶的登錄密碼,也可以不設(shè)置。 with grant option: 表示允許此用戶將自己的權(quán)限授權(quán)給其它用戶。 注意: grant添加的權(quán)限是自動(dòng)疊加的,比如第一次添加了select權(quán)限后面再添加insert權(quán)限,那么此用戶就擁有select和insert權(quán)限。如果此用戶已經(jīng)擁有所有權(quán)限,再添加select權(quán)限則此用戶還是擁有all privileges所有權(quán)限。 # 移除權(quán)限 revoke insert on '數(shù)據(jù)庫(kù)名'.'表名' from '用戶名'@'IP地址'; # 例如移除insert權(quán)限: revoke insert on pydb.* from 'test0'@'localhost'; # 例如所有權(quán)限: revoke all on pydb.* from 'test0'@'localhost'; # 刷新權(quán)限 mysql> flush privileges;
所有權(quán)限包含很多:[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]
實(shí)際使用過(guò)程中不建議賦所有權(quán)限,需要哪個(gè)賦哪個(gè)就行。
關(guān)于權(quán)限的詳情請(qǐng)參考mysql官方說(shuō)明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html
3.5 用戶和數(shù)據(jù)庫(kù)及表關(guān)系圖

4. 數(shù)據(jù)庫(kù)的備份及恢復(fù)
# 備份所有數(shù)據(jù)庫(kù): mysqldump -uroot -p --all-databases > all.db # 備份指定數(shù)據(jù)庫(kù): mysqldump -uroot -p pydb > test1.db # 備份指定數(shù)據(jù)庫(kù)的某些表 mysqldump -uroot -p pydb 表名1 表名2 表名n > test2.db # 備份指定數(shù)據(jù)庫(kù)排除某些表(排除表1 和 表2) mysqldump -uroot -p pydb --ignore-table=pydb.表1 --ignore-table=pydb.表2 > test3.db # 創(chuàng)建test數(shù)據(jù)庫(kù) create database test charset=utf8; # 恢復(fù)備份數(shù)據(jù),導(dǎo)入的數(shù)據(jù)庫(kù)必須存在 mysql -u root -p test < test1.db
5. Navicat 遠(yuǎn)程連接數(shù)據(jù)庫(kù)
5.1 修改本地監(jiān)聽(tīng)地址
# 查看監(jiān)聽(tīng) netstat -an |grep 3306 # 前監(jiān)聽(tīng)的是本地回環(huán)地址:tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN # 遠(yuǎn)程客戶端無(wú)法訪問(wèn) # 修改MySQL的本地監(jiān)聽(tīng)地址 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 修改bind-address 的值為 bind-address = 0.0.0.0保存退出。 也可以修改為本機(jī)ip,例如:bind-address = 192.168.111.10 # 重啟mysql數(shù)據(jù)庫(kù) sudo service mysql restart # 在遠(yuǎn)程客戶端機(jī)器上測(cè)試下網(wǎng)絡(luò),telnet成功說(shuō)明網(wǎng)絡(luò)沒(méi)問(wèn)題 telnet 192.168.111.10 3306 # 注意:阿里云服務(wù)器有端口限制,需要去配置下端口訪問(wèn)規(guī)則開(kāi)放3306端口 網(wǎng)址:[https://homenew.console.aliyun.com/](https://homenew.console.aliyun.com/)
5.2 Navicat 遠(yuǎn)程連接
自行下載Navicat并安裝。

如果連接失敗則進(jìn)行以下測(cè)試: [192.168.111.10]是你的mysql服務(wù)器ip地址 1.測(cè)試網(wǎng)絡(luò)和端口 telnet 192.168.111.10 3306 2.查看服務(wù)器監(jiān)聽(tīng)地址 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf bind-address = 0.0.0.0 3.查看用戶是否有遠(yuǎn)程訪問(wèn)權(quán)限及密碼驗(yàn)證插件 select user,host,plugin from user; 登陸用戶host的值: % 或 遠(yuǎn)程客戶端ip 登陸用戶plugin的值: mysql_native_password mysql5.7版本的密碼驗(yàn)證插件是 mysql_native_password # 添加用戶訪問(wèn)權(quán)限及設(shè)定密碼驗(yàn)證插件 grant all privileges on pydb.* to 'test0'@'%' identified with mysql_native_password by 'test0111'; # 如果用戶遠(yuǎn)程訪問(wèn)權(quán)限存在,密碼驗(yàn)證插件不對(duì),可只修改密碼驗(yàn)證插件 alter user 'test0'@'%' identified with mysql_native_password by '111222333'; # 刷新權(quán)限 mysql> flush privileges;
6. 卸載mysql
# 卸載mysql:
1.sudo apt-get autoremove mysql* --purge
2.sudo apt-get remove mysql-server
3.sudo apt-get remove mysql-common
# 清理殘留數(shù)據(jù)
sudo dpkg -l |grep mysql|awk '{print $2}' |sudo xargs dpkg -P
sudo rm -rf /etc/mysql/
sudo rm -rf /var/lib/mysql
# 檢查是否刪除完畢
whereis mysql
sudo find / -name mysql
本博文記錄內(nèi)容我都自己操作過(guò),如能幫助到需要的小伙伴,我將感到很榮幸,如有錯(cuò)誤之處歡迎指正。
到此這篇關(guān)于Ubuntu 20.04 安裝和配置MySql5.7的文章就介紹到這了,更多相關(guān)Ubuntu 20.04 安裝MySql5.7內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信