Ubuntu 20.04 安裝和配置MySql5.7的詳細(xì)教程
1. Ubuntu換源
ubuntu 20.04系統(tǒng)自帶源直接安裝是MySQL 8.0,我要安裝MySQL 5.7的版本的所以先進(jìn)行換源。
1.1 備份原來的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)容清空,然后選擇一個源粘貼到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++等語言操作mysql的動態(tài)鏈接庫,如果不需要可不安裝 sudo apt install libmysqlclient-dev
安裝時需要輸入兩次mysql root用戶的密碼(此密碼需要記住)
安裝完成后查看mysql版本和服務(wù)
mysql -V # 查看mysql版本 netstat -tap | grep mysql # 查看mysql服務(wù)
如上圖所示說明安裝成功。
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)版本然后點擊下載。
網(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 # 解壓出來的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個測試相關(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é)果報錯了_^^
報錯的意思是缺少 2個包 libtinfo5
和 libmecab2
,那就安裝這兩個包,如果還缺少其他包,按照下面的步驟安裝即可。
# 服務(wù)器能聯(lián)網(wǎng)時直接安裝 sudo apt-get install libtinfo5 sudo apt-get install libmecab2
服務(wù)器不能聯(lián)網(wǎng)時就自己去下載然后上傳到服務(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對應(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ù)
如上圖所示說明安裝成功。
3.新建用戶并賦權(quán)
3.1 未設(shè)置或忘了密碼解決辦法
# 停止mysql服務(wù) sudo service mysql stop # 修改MySQL的登錄設(shè)置,暫時不校驗登陸密碼 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ù)庫 sudo service mysql restart # 免密登陸mysql數(shù)據(jù)庫 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”的注釋放開然后保存退出 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ù)庫 sudo service mysql restart # 使用新密碼登陸mysql mysql -u用戶名 -p密碼 數(shù)據(jù)庫名 # 例如: mysql -uroot -p111222333 mysql
3.2 登陸mysql查看信息
# 直接登陸mysql mysql -u用戶名 -p密碼 數(shù)據(jù)庫名 # 例如: mysql -uroot -p111222333 mysql # 先登陸后面再輸入密碼和選擇數(shù)據(jù)庫 mysql -u root -p Enter password: “root用戶密碼” mysql> use mysql # 選擇要操作的數(shù)據(jù)庫 # 切換數(shù)據(jù)庫 use 數(shù)據(jù)庫名; # 查看所有數(shù)據(jù)庫 show databases; # 查看登陸數(shù)據(jù)庫中所有的表 show tables; # 查看數(shù)據(jù)表結(jié)構(gòu) desc 表名; # 查看登陸用戶名 select user(); # 查看登陸數(shù)據(jù)庫庫名 select database(); # 查看版本 select version(); # 顯示當(dāng)前時間 select now(); # 查看所有用戶的 用戶名、可登陸主機(jī)、身份驗證插件、密碼 select user,host,plugin,authentication_string from user; # 查看當(dāng)前登錄用戶權(quán)限 show grants; # 查看任意用戶權(quán)限(后面說權(quán)限的具體含義) show grants for root@localhost;
3.3 創(chuàng)建及刪除數(shù)據(jù)庫和用戶
# 使用root用戶登錄數(shù)據(jù)庫 mysql -uroot -p111222333 mysql # 創(chuàng)建數(shù)據(jù)庫 create database "數(shù)據(jù)庫名" charset="數(shù)據(jù)庫編碼"; # 例如: create database pydb charset=utf8; # 創(chuàng)建數(shù)據(jù)庫用戶 create user "用戶名"@"IP地址" identified by "密碼"; # 例如: create user 'test0'@'localhost' identified by 'test0111'; # 刪除數(shù)據(jù) drop database [數(shù)據(jù)庫名]; # 例如: drop database pydb; # 刪除數(shù)據(jù)庫用戶 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: 表示無權(quán)限用戶。 # 用test0用戶登錄pydb數(shù)據(jù)庫 mysql -utest0 -ptest0111 pydb 報錯提示無權(quán)操作:[ERROR 1044 (42000): Access denied for user 'test0'@'localhost' to database 'pydb'] # 使用root用戶給test0用戶賦權(quán) grant all privileges on '數(shù)據(jù)庫名'.'表名' to '用戶名'@'IP地址' identified by "密碼" with grant option; # 例如設(shè)置本地客戶端訪問此用戶: mysql> grant all privileges on pydb.* to 'test0'@'localhost' identified by 'test0111' with grant option; # 設(shè)置遠(yuǎ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ù)庫下的所有表的權(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)限要賦給哪個數(shù)據(jù)庫的哪個表,*.* 表示所有數(shù)據(jù)庫的所有表。 to: 表示權(quán)限要賦給哪個用戶,格式:”用戶名”@”登錄IP或域名”。localhost表示本機(jī)客戶端可登錄此用戶, %表示任何主機(jī)客戶端都可以登錄此用戶,如果配的是具體ip例如'用戶名'@'192.168.113',表示只允許192.168.113這個主機(jī)客戶端登錄此用戶。 也可以配置IP段例如'用戶名'@'192.168.%' identified by: 設(shè)置此用戶的登錄密碼,也可以不設(shè)置。 with grant option: 表示允許此用戶將自己的權(quán)限授權(quán)給其它用戶。 注意: grant添加的權(quán)限是自動疊加的,比如第一次添加了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ù)庫名'.'表名' 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]
實際使用過程中不建議賦所有權(quán)限,需要哪個賦哪個就行。
關(guān)于權(quán)限的詳情請參考mysql官方說明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html
3.5 用戶和數(shù)據(jù)庫及表關(guān)系圖
4. 數(shù)據(jù)庫的備份及恢復(fù)
# 備份所有數(shù)據(jù)庫: mysqldump -uroot -p --all-databases > all.db # 備份指定數(shù)據(jù)庫: mysqldump -uroot -p pydb > test1.db # 備份指定數(shù)據(jù)庫的某些表 mysqldump -uroot -p pydb 表名1 表名2 表名n > test2.db # 備份指定數(shù)據(jù)庫排除某些表(排除表1 和 表2) mysqldump -uroot -p pydb --ignore-table=pydb.表1 --ignore-table=pydb.表2 > test3.db # 創(chuàng)建test數(shù)據(jù)庫 create database test charset=utf8; # 恢復(fù)備份數(shù)據(jù),導(dǎo)入的數(shù)據(jù)庫必須存在 mysql -u root -p test < test1.db
5. Navicat 遠(yuǎn)程連接數(shù)據(jù)庫
5.1 修改本地監(jiān)聽地址
# 查看監(jiān)聽 netstat -an |grep 3306 # 前監(jiān)聽的是本地回環(huán)地址:tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN # 遠(yuǎn)程客戶端無法訪問 # 修改MySQL的本地監(jiān)聽地址 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ù)庫 sudo service mysql restart # 在遠(yuǎn)程客戶端機(jī)器上測試下網(wǎng)絡(luò),telnet成功說明網(wǎng)絡(luò)沒問題 telnet 192.168.111.10 3306 # 注意:阿里云服務(wù)器有端口限制,需要去配置下端口訪問規(guī)則開放3306端口 網(wǎng)址:[https://homenew.console.aliyun.com/](https://homenew.console.aliyun.com/)
5.2 Navicat 遠(yuǎn)程連接
自行下載Navicat并安裝。
如果連接失敗則進(jìn)行以下測試: [192.168.111.10]是你的mysql服務(wù)器ip地址 1.測試網(wǎng)絡(luò)和端口 telnet 192.168.111.10 3306 2.查看服務(wù)器監(jiān)聽地址 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf bind-address = 0.0.0.0 3.查看用戶是否有遠(yuǎn)程訪問權(quán)限及密碼驗證插件 select user,host,plugin from user; 登陸用戶host的值: % 或 遠(yuǎn)程客戶端ip 登陸用戶plugin的值: mysql_native_password mysql5.7版本的密碼驗證插件是 mysql_native_password # 添加用戶訪問權(quán)限及設(shè)定密碼驗證插件 grant all privileges on pydb.* to 'test0'@'%' identified with mysql_native_password by 'test0111'; # 如果用戶遠(yuǎn)程訪問權(quá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ān)于Ubuntu 20.04 安裝和配置MySql5.7的文章就介紹到這了,更多相關(guān)Ubuntu 20.04 安裝MySql5.7內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySql分頁時使用limit+order by會出現(xiàn)數(shù)據(jù)重復(fù)問題解決
在MySQL中我們通常會采用limit來進(jìn)行翻頁查詢,當(dāng)limit遇到 order by的時候會出現(xiàn)數(shù)據(jù)重復(fù)問題,本文就來記錄一下,感興趣的可以了解一下2021-08-08mysql5.6及以下版本如何查詢數(shù)據(jù)庫里的json
MySQL里面保存數(shù)據(jù)有時候會把一些雜亂且不常用的時候丟進(jìn)一個json字段里面,那么如何查詢數(shù)據(jù)庫里的json呢以及mysql存儲json注意那些格式呢?接下來通過本文給大家詳細(xì)介紹,需要的朋友參考下2017-03-03MySQL學(xué)習(xí)之?dāng)?shù)據(jù)更新操作詳解
這篇文章我們將學(xué)習(xí)一下用于數(shù)據(jù)更改的 “UPDATE” 語句, “UPDATE” 語句也是屬于 DML 這一類數(shù)據(jù)庫操作語言,感興趣的可以了解一下2022-08-08揭秘SQL優(yōu)化技巧 改善數(shù)據(jù)庫性能
這篇文章是以 MySQL 為背景,很多內(nèi)容同時適用于其他關(guān)系型數(shù)據(jù)庫,需要有一些索引知識為基礎(chǔ),重點講述如何優(yōu)化SQL,來提高數(shù)據(jù)庫的性能2012-01-01Mysql中自定義函數(shù)的創(chuàng)建和執(zhí)行方式
這篇文章主要介紹了Mysql中自定義函數(shù)的創(chuàng)建和執(zhí)行方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03