热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ubuntu20.04安装和配置MySql5.7的详细教程

这篇文章主要介绍了Ubuntu20.04安装和配置MySql5.7的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,

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 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 方式安装

这种方式需要服务器能联网

# 执行下面安装命令

# 安装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安装包方式安装

这种安装方式服务器能联网或不能联网都可以

以下安装使用到的包可以自己去下载,也可以使用我下载好的。

链接: https://pan.baidu.com/s/1lJq7hZH-X35f5gC-A-URiQ

 提取码: gxfk

1)下载deb安装包

安装包可以在服务器里直接获取或者自己去官网下载

# 在服务器里直接获取(服务器需要联网)
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar

# 也可以直接将网址粘贴到浏览器下载安装压缩包
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar

自己去官网下载,选择好mysql版本和操作系统版本然后点击下载。

网址:https://downloads.mysql.com/archives/community/

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个包 libtinfo5libmecab2,那就安装这两个包,如果还缺少其他包,按照下面的步骤安装即可。

# 服务器能联网时直接安装
sudo apt-get install libtinfo5
sudo apt-get install libmecab2

服务器不能联网时就自己去下载然后上传到服务器

下载网址 https://ubuntu.pkgs.org/

# 下载软件包需要区分硬件架构
[admin0@Ubuntu20:/home/admin0]$ uname -m # 查看硬件架构
x86_64 # x86_64就是AMD64

将Binary Package对应的网址复制到浏览器即可下载,然后将下载好的 libtinfo5libmecab2包导入服务器进行安装。

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

提示输入2次root密码,然后安装成功

安装完成后查看mysql版本和服务

mysql -V # 查看mysql版本
netstat -tap | grep mysql # 查看mysql服务

如上图所示说明安装成功。

3.新建用户并赋权

3.1 未设置或忘了密码解决办法

# 停止mysql服务
sudo service mysql stop

# 修改MySQL的登录设置,暂时不校验登陆密码
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数据库
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/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数据库
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这个主机客户端登录此用户。 也可以配置IP段例如"用户名"@"192.168.%"
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, 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. 数据库的备份及恢复

# 备份所有数据库:
mysqldump -uroot -p --all-databases > all.db

# 备份指定数据库:
mysqldump -uroot -p pydb > test1.db

# 备份指定数据库的某些表
mysqldump -uroot -p pydb 表名1 表名2 表名n > test2.db

# 备份指定数据库排除某些表(排除表1 和 表2)
mysqldump -uroot -p pydb --ignore-table=pydb.表1 --ignore-table=pydb.表2 > test3.db

# 创建test数据库
create database test charset=utf8; 

# 恢复备份数据,导入的数据库必须存在
mysql -u root -p test 

5. Navicat 远程连接数据库

5.1 修改本地监听地址

# 查看监听
netstat -an |grep 3306
# 前监听的是本地回环地址:tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 
# 远程客户端无法访问

# 修改MySQL的本地监听地址
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

修改bind-address 的值为 bind-address = 0.0.0.0保存退出。
也可以修改为本机ip,例如:bind-address = 192.168.111.10

# 重启mysql数据库
sudo service mysql restart

# 在远程客户端机器上测试下网络,telnet成功说明网络没问题
telnet 192.168.111.10 3306

# 注意:阿里云服务器有端口限制,需要去配置下端口访问规则开放3306端口
网址:[https://homenew.console.aliyun.com/](https://homenew.console.aliyun.com/)

5.2 Navicat 远程连接

自行下载Navicat并安装。

如果连接失败则进行以下测试:
[192.168.111.10]是你的mysql服务器ip地址
1.测试网络和端口
telnet 192.168.111.10 3306

2.查看服务器监听地址
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0

3.查看用户是否有远程访问权限及密码验证插件
select user,host,plugin from user;
登陆用户host的值: % 或 远程客户端ip
登陆用户plugin的值: mysql_native_password 
mysql5.7版本的密码验证插件是 mysql_native_password 

# 添加用户访问权限及设定密码验证插件
grant all privileges on pydb.* to "test0"@"%" identified with mysql_native_password by "test0111";

# 如果用户远程访问权限存在,密码验证插件不对,可只修改密码验证插件
alter user "test0"@"%" identified with mysql_native_password by "111222333";

# 刷新权限
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

# 清理残留数据 
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

本博文记录内容我都自己操作过,如能帮助到需要的小伙伴,我将感到很荣幸,如有错误之处欢迎指正。

到此这篇关于Ubuntu 20.04 安装和配置MySql5.7的文章就介绍到这了,更多相关Ubuntu 20.04 安装MySql5.7内容请搜索编程笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程笔记!


推荐阅读
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
author-avatar
手机用户2602914293
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有