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客戶(hù)端 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用戶(hù)的密碼(此密碼需要記住)
安裝完成后查看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.新建用戶(hù)并賦權(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用戶(hù)名 -p密碼 數(shù)據(jù)庫(kù)名 # 例如: mysql -uroot -p111222333 mysql
3.2 登陸mysql查看信息
# 直接登陸mysql mysql -u用戶(hù)名 -p密碼 數(shù)據(jù)庫(kù)名 # 例如: mysql -uroot -p111222333 mysql # 先登陸后面再輸入密碼和選擇數(shù)據(jù)庫(kù) mysql -u root -p Enter password: “root用戶(hù)密碼” 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 表名; # 查看登陸用戶(hù)名 select user(); # 查看登陸數(shù)據(jù)庫(kù)庫(kù)名 select database(); # 查看版本 select version(); # 顯示當(dāng)前時(shí)間 select now(); # 查看所有用戶(hù)的 用戶(hù)名、可登陸主機(jī)、身份驗(yàn)證插件、密碼 select user,host,plugin,authentication_string from user; # 查看當(dāng)前登錄用戶(hù)權(quán)限 show grants; # 查看任意用戶(hù)權(quán)限(后面說(shuō)權(quán)限的具體含義) show grants for root@localhost;
3.3 創(chuàng)建及刪除數(shù)據(jù)庫(kù)和用戶(hù)
# 使用root用戶(hù)登錄數(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ù)用戶(hù) create user "用戶(hù)名"@"IP地址" identified by "密碼"; # 例如: create user 'test0'@'localhost' identified by 'test0111'; # 刪除數(shù)據(jù) drop database [數(shù)據(jù)庫(kù)名]; # 例如: drop database pydb; # 刪除數(shù)據(jù)庫(kù)用戶(hù) drop user '用戶(hù)名'@'ip地址'; # 例如: drop user 'test0'@'localhost';
3.4 給用戶(hù)賦權(quán)限
# 查看用戶(hù)test0的權(quán)限 show grants for test0@localhost; 顯示:[GRANT USAGE ON *.* TO 'test0'@'localhost'] USAGE: 表示無(wú)權(quán)限用戶(hù)。 # 用test0用戶(hù)登錄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用戶(hù)給test0用戶(hù)賦權(quán) grant all privileges on '數(shù)據(jù)庫(kù)名'.'表名' to '用戶(hù)名'@'IP地址' identified by "密碼" with grant option; # 例如設(shè)置本地客戶(hù)端訪(fǎng)問(wèn)此用戶(hù): mysql> grant all privileges on pydb.* to 'test0'@'localhost' identified by 'test0111' with grant option; # 設(shè)置遠(yuǎn)程任意客戶(hù)端訪(fǎng)問(wèn)此用戶(hù): 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)在本地客戶(hù)端和遠(yuǎn)程客戶(hù)端都擁有了登陸test0用戶(hù)操作pydb數(shù)據(jù)庫(kù)下的所有表的權(quán)限了。 # 賦權(quán)命令解釋 grant: 賦權(quán)關(guān)鍵字 all privileges: 賦權(quán)類(lèi)型,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è)用戶(hù),格式:”用戶(hù)名”@”登錄IP或域名”。localhost表示本機(jī)客戶(hù)端可登錄此用戶(hù), %表示任何主機(jī)客戶(hù)端都可以登錄此用戶(hù),如果配的是具體ip例如'用戶(hù)名'@'192.168.113',表示只允許192.168.113這個(gè)主機(jī)客戶(hù)端登錄此用戶(hù)。 也可以配置IP段例如'用戶(hù)名'@'192.168.%' identified by: 設(shè)置此用戶(hù)的登錄密碼,也可以不設(shè)置。 with grant option: 表示允許此用戶(hù)將自己的權(quán)限授權(quán)給其它用戶(hù)。 注意: grant添加的權(quán)限是自動(dòng)疊加的,比如第一次添加了select權(quán)限后面再添加insert權(quán)限,那么此用戶(hù)就擁有select和insert權(quán)限。如果此用戶(hù)已經(jīng)擁有所有權(quán)限,再添加select權(quán)限則此用戶(hù)還是擁有all privileges所有權(quán)限。 # 移除權(quán)限 revoke insert on '數(shù)據(jù)庫(kù)名'.'表名' from '用戶(hù)名'@'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 用戶(hù)和數(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)程客戶(hù)端無(wú)法訪(fǎng)問(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)程客戶(hù)端機(jī)器上測(cè)試下網(wǎng)絡(luò),telnet成功說(shuō)明網(wǎng)絡(luò)沒(méi)問(wèn)題 telnet 192.168.111.10 3306 # 注意:阿里云服務(wù)器有端口限制,需要去配置下端口訪(fǎng)問(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.查看用戶(hù)是否有遠(yuǎn)程訪(fǎng)問(wèn)權(quán)限及密碼驗(yàn)證插件 select user,host,plugin from user; 登陸用戶(hù)host的值: % 或 遠(yuǎn)程客戶(hù)端ip 登陸用戶(hù)plugin的值: mysql_native_password mysql5.7版本的密碼驗(yàn)證插件是 mysql_native_password # 添加用戶(hù)訪(fǎng)問(wèn)權(quán)限及設(shè)定密碼驗(yàn)證插件 grant all privileges on pydb.* to 'test0'@'%' identified with mysql_native_password by 'test0111'; # 如果用戶(hù)遠(yuǎn)程訪(fǎng)問(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySql分頁(yè)時(shí)使用limit+order by會(huì)出現(xiàn)數(shù)據(jù)重復(fù)問(wèn)題解決
在MySQL中我們通常會(huì)采用limit來(lái)進(jìn)行翻頁(yè)查詢(xún),當(dāng)limit遇到 order by的時(shí)候會(huì)出現(xiàn)數(shù)據(jù)重復(fù)問(wèn)題,本文就來(lái)記錄一下,感興趣的可以了解一下2021-08-08linux下備份MYSQL數(shù)據(jù)庫(kù)的方法
這是一個(gè)眾所周知的事實(shí),對(duì)你運(yùn)行中的網(wǎng)站的MySQL數(shù)據(jù)庫(kù)備份是極為重要的。2010-02-02mysql8.0.11 winx64手動(dòng)安裝配置教程
這篇文章主要為大家詳細(xì)介紹了mysql8.0.11 winx64手動(dòng)安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05mysql5.6及以下版本如何查詢(xún)數(shù)據(jù)庫(kù)里的json
MySQL里面保存數(shù)據(jù)有時(shí)候會(huì)把一些雜亂且不常用的時(shí)候丟進(jìn)一個(gè)json字段里面,那么如何查詢(xún)數(shù)據(jù)庫(kù)里的json呢以及mysql存儲(chǔ)json注意那些格式呢?接下來(lái)通過(guò)本文給大家詳細(xì)介紹,需要的朋友參考下2017-03-03MySQL學(xué)習(xí)之?dāng)?shù)據(jù)更新操作詳解
這篇文章我們將學(xué)習(xí)一下用于數(shù)據(jù)更改的 “UPDATE” 語(yǔ)句, “UPDATE” 語(yǔ)句也是屬于 DML 這一類(lèi)數(shù)據(jù)庫(kù)操作語(yǔ)言,感興趣的可以了解一下2022-08-08Mysql在線(xiàn)回收undo表空間實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于Mysql在線(xiàn)回收undo表空間的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09揭秘SQL優(yōu)化技巧 改善數(shù)據(jù)庫(kù)性能
這篇文章是以 MySQL 為背景,很多內(nèi)容同時(shí)適用于其他關(guān)系型數(shù)據(jù)庫(kù),需要有一些索引知識(shí)為基礎(chǔ),重點(diǎn)講述如何優(yōu)化SQL,來(lái)提高數(shù)據(jù)庫(kù)的性能2012-01-01Mysql中自定義函數(shù)的創(chuàng)建和執(zhí)行方式
這篇文章主要介紹了Mysql中自定義函數(shù)的創(chuàng)建和執(zhí)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03