Ubuntu20.04安装和配置MySql5.7的详细教程⽬录
1. Ubuntu换源
2. 安装mysql
3.新建⽤户并赋权
4. 数据库的备份及恢复
5. Navicat 远程连接数据库
6. 卸载mysql
1. Ubuntu换源
ubuntu 20.04系统⾃带源直接安装是MySQL 8.0,我要安装MySQL 5.7的版本的所以先进⾏换源。
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内容清空,然后选择⼀个源粘贴到sources.list,保存退出。
# 清华镜像源
deb mirrors.tuna.tsinghua.edu/ubuntu/ xenial main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ xenial main restricted universe multiverse
deb mirrors.tuna.tsinghua.edu/ubuntu/ xenial-updates main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ xenial-updates main restricted universe multiverse
deb mirrors.tuna.tsinghua.edu/ubuntu/ xenial-backports main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ xenial-backports main restricted universe multiverse
deb mirrors.tuna.tsinghua.edu/ubuntu/ xenial-security main restricted universe multiverse
deb-src mirrors.tuna.tsinghua.edu/ubuntu/ xenial-security main restricted universe multiverse
1.3 更新镜像源和软件绿袖子歌词
# 更新镜像源
sudo apt-get update
# 更新软件
sudo apt-get upgrade
2. 安装mysql
2.1 apt-get install ⽅式安装
这种⽅式需要服务器能联⽹
# 执⾏下⾯安装命令
# 安装mysql5.7服务端
sudo apt-get install mysql-server-5.7
# 安装mysql5.7客户端
sudo apt-get install mysql-client-5.7
# 使⽤c/c++等语⾔操作mysql的动态链接库,如果不需要可不安装
sudo apt install libmysqlclient-dev
安装时需要输⼊两次mysql root⽤户的密码(此密码需要记住)
安装完成后查看mysql版本和服务
mysql -V # 查看mysql版本
netstat -tap | grep mysql # 查看mysql服务
如上图所⽰说明安装成功。
2.2 deb安装包⽅式安装
这种安装⽅式服务器能联⽹或不能联⽹都可以
以下安装使⽤到的包可以⾃⼰去下载,也可以使⽤我下载好的。
提取码: gxfk
1)下载deb安装包
安装包可以在服务器⾥直接获取或者⾃⼰去官⽹下载
# 在服务器⾥直接获取(服务器需要联⽹)
wget sql/get/Downloads/MySQL-5.7/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar
# 也可以直接将⽹址粘贴到浏览器下载安装压缩包
sql/get/Downloads/MySQL-5.7/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar
⾃⼰去官⽹下载,选择好mysql版本和操作系统版本然后点击下载。
2)使⽤deb包进⾏安装
将下载好的mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar压缩包导⼊linux服务器,然后进⾏下⾯的操作。
# 新建⽬录
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个测试相关的包
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进⾏安装
# ⽤dpkg进⾏安装
sudo dpkg -i mysql-*.deb
结果报错了_^^
报错的意思是缺少 2个包libtinfo5和libmecab2,那就安装这两个包,如果还缺少其他包,按照下⾯的步骤安装即可。# 服务器能联⽹时直接安装
sudo apt-get install libtinfo5
sudo apt-get install libmecab2
服务器不能联⽹时就⾃⼰去下载然后上传到服务器
# 下载软件包需要区分硬件架构
[admin0@Ubuntu20:/home/admin0]$ uname -m # 查看硬件架构
x86_64 # x86_64就是AMD64
将Binary Package对应的⽹址复制到浏览器即可下载,然后将下载好的libtinfo5和libmecab2包导⼊服务器进⾏安装。sudo dpkg -i libtinfo5_6.2-0ubuntu2_amd64.deb
sudo dpkg -i libmecab2_0.996-10build1_amd64.deb
# 再次⽤dpkg进⾏安装
歌曲阳光大道
cd mysql5.7.31
sudo dpkg -i mysql-*.deb
i need you提⽰输⼊2次root密码,然后安装成功
安装完成后查看mysql版本和服务
mysql -V # 查看mysql版本
netstat -tap | grep mysql # 查看mysql服务
如上图所⽰说明安装成功。
3.新建⽤户并赋权
3.1 未设置或忘了密码解决办法
# 停⽌mysql服务
sudo service mysql stop
# 修改MySQL的登录设置,暂时不校验登陆密码
sudo vim /etc/f.d/mysqldf
# 将[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数据库
sudo service mysql restart
月儿圆圆 陈翔
# 免密登陆mysql数据库
mysql -u root mysql
# 修改root密码
update mysql.user set authentication_string=password('111222333') where user='root'; # 刷新⽣效
flush privileges;
# 还原MySQL的登录设置
# 将[mysqld]下添加的“skip-grant-tables” 删除
# 将“skip-external-locking”的注释放开然后保存退出
sudo vim /etc/f.d/mysqldf
例如:
================================================
[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数据库
sudo service mysql restart
# 使⽤新密码登陆mysql
mysql -u⽤户名 -p密码数据库名
# 例如:
mysql -uroot -p111222333 mysql
3.2 登陆mysql查看信息
# 直接登陆mysql
昌珉 听海mysql -u⽤户名 -p密码数据库名
# 例如:
mysql -uroot -p111222333 mysql
# 先登陆后⾯再输⼊密码和选择数据库
mysql -u root -p
Enter password: “root⽤户密码”
mysql> use mysql # 选择要操作的数据库
# 切换数据库
use 数据库名;
# 查看所有数据库
show databases;
# 查看登陆数据库中所有的表
show tables;
# 查看数据表结构
desc 表名;
# 查看登陆⽤户名
select user();
# 查看登陆数据库库名
select database();
# 查看版本
select version();
# 显⽰当前时间
select now();
# 查看所有⽤户的⽤户名、可登陆主机、⾝份验证插件、密码
select user,host,plugin,authentication_string from user;
# 查看当前登录⽤户权限
show grants;
# 查看任意⽤户权限(后⾯说权限的具体含义)
show grants for root@localhost;
3.3 创建及删除数据库和⽤户
# 使⽤root⽤户登录数据库
mysql -uroot -p111222333 mysql
# 创建数据库
create database "数据库名" charset="数据库编码";
# 例如:
create database pydb charset=utf8;
# 创建数据库⽤户
create user "⽤户名"@"IP地址" identified by "密码";
# 例如:
create user 'test0'@'localhost' identified by 'test0111';
# 删除数据
drop database [数据库名];
# 例如:
drop database pydb;
# 删除数据库⽤户
drop user '⽤户名'@'ip地址';
# 例如:
drop user 'test0'@'localhost';
3.4 给⽤户赋权限
# 查看⽤户test0的权限
show grants for test0@localhost;
显⽰:[GRANT USAGE ON *.* TO 'test0'@'localhost']
USAGE: 表⽰⽆权限⽤户。
# ⽤test0⽤户登录pydb数据库
mysql -utest0 -ptest0111 pydb
报错提⽰⽆权操作:[ERROR 1044 (42000): Access denied for user 'test0'@'localhost' to database 'pydb']
# 使⽤root⽤户给test0⽤户赋权
grant all privileges on '数据库名'.'表名' to '⽤户名'@'IP地址' identified by "密码" with grant option;
# 例如设置本地客户端访问此⽤户:
mysql> grant all privileges on pydb.* to 'test0'@'localhost' identified by 'test0111' with grant option;
# 设置远程任意客户端访问此⽤户:
mysql> grant all privileges on pydb.* to 'test0'@'%' with grant option;
# 刷新权限
mysql> flush privileges;
# 查看本地权限
show grants for 'test0'@'localhost';
回显:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'localhost' WITH GRANT OPTION]
# 查看远程权限
show grants for 'test0'@'%';
回显:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'%' WITH GRANT OPTION]
权限都添加成功了,现在本地客户端和远程客户端都拥有了登陆test0⽤户操作pydb数据库下的所有表的权限了。
# 赋权命令解释
grant:赋权关键字
all privileges:赋权类型,all privileges表⽰所有权限。也可以赋值具体的权限如:select、update、create、drop等。
on:表⽰权限要赋给哪个数据库的哪个表,*.* 表⽰所有数据库的所有表。
to: 表⽰权限要赋给哪个⽤户,格式:”⽤户名”@”登录IP或域名”。localhost表⽰本机客户端可登录此⽤户, %表⽰任何主机客户端都可以登录此⽤户,如果配的是具体ip例如'⽤户名'@'192.168.113',表⽰只允许192.168.113这个主机客户端登录此⽤户。也可以配置I identified by:设置此⽤户的登录密码,也可以不设置。
with grant option:表⽰允许此⽤户将⾃⼰的权限授权给其它⽤户。
注意: grant添加的权限是⾃动叠加的,⽐如第⼀次添加了select权限后⾯再添加insert权限,那么此⽤户就拥有select和insert权限。如果此⽤户已经拥有所有权限,再添加select权限则此⽤户还是拥有all privileges所有权限。
# 移除权限
revoke insert on '数据库名'.'表名' from '⽤户名'@'IP地址';
# 例如移除insert权限:
revoke insert on pydb.* from 'test0'@'localhost';
# 例如所有权限:
revoke all on pydb.* from 'test0'@'localhost';
# 刷新权限
mysql> flush privileges;
所有权限包含很多:[SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDE
X, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW,
SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER]
实际使⽤过程中不建议赋所有权限,需要哪个赋哪个就⾏。
3.5 ⽤户和数据库及表关系图