2020年12月17日星期四

Ubuntu 20.04 安装和配置MySql5.7

untubu mysql deb安装包

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 multiversedeb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiversedeb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiversedeb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiversedeb-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/15kjX-ybetkUJD7TZPz0uLQ

提取码: qozu

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.31mv mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar ./mysql5.7.31# 解压cd mysql5.7.31sudo tar -vxf mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar# 解压出来的deb安装包如下:libmysqlclient20_5.7.31-1ubuntu18.04_amd64.debmysql-client_5.7.31-1ubuntu18.04_amd64.debmysql-community-source_5.7.31-1ubuntu18.04_amd64.debmysql-server_5.7.31-1ubuntu18.04_amd64.debmysql-common_5.7.31-1ubuntu18.04_amd64.debmysql-testsuite_5.7.31-1ubuntu18.04_amd64.deblibmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.debmysql-community-client_5.7.31-1ubuntu18.04_amd64.debmysql-community-server_5.7.31-1ubuntu18.04_amd64.deblibmysqld-dev_5.7.31-1ubuntu18.04_amd64.debmysql-community-test_5.7.31-1ubuntu18.04_amd64.deb# 删除2个测试相关的包sudo rm -f mysql-testsuite_5.7.31-1ubuntu18.04_amd64.debsudo 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 libtinfo5sudo 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.debsudo dpkg -i libmecab2_0.996-10build1_amd64.deb

在这里插入图片描述

# 再次用dpkg进行安装cd mysql5.7.31sudo 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  = mysqlpid-file = /var/run/mysqld/mysqld.pidsocket  = /var/run/mysqld/mysqld.sockport  = 3306basedir  = /usrdatadir  = /var/lib/mysqltmpdir  = /tmplc-messages-dir = /usr/share/mysql#skip-external-lockingskip-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  = mysqlpid-file = /var/run/mysqld/mysqld.pidsocket  = /var/run/mysqld/mysqld.sockport  = 3306basedir  = /usrdatadir  = /var/lib/mysqltmpdir  = /tmplc-messages-dir = /usr/share/mysqlskip-external-locking=================================================# 重启mysql数据库sudo service mysql restart# 使用新密码登陆mysqlmysql -u用户名 -p密码 数据库名# 例如: mysql -uroot -p111222333 mysql

3.2 登陆mysql查看信息

# 直接登陆mysqlmysql -u用户名 -p密码 数据库名# 例如: mysql -uroot -p111222333 mysql# 先登陆后面再输入密码和选择数据库mysql -u root -pEnter 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官方说明 id="35-用户和数据库及表关系图">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 < test1.db

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 33062.查看服务器监听地址sudo vim /etc/mysql/mysql.conf.d/mysqld.cnfbind-address = 0.0.0.03.查看用户是否有远程访问权限及密码验证插件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* --purge2.sudo apt-get remove mysql-server3.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 mysqlsudo find / -name mysql

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









原文转载:http://www.shaoqun.com/a/501269.html

asinseed:https://www.ikjzd.com/w/533

好东东网:https://www.ikjzd.com/w/1238

一淘网:https://www.ikjzd.com/w/1698


untubumysqldeb安装包1.Ubuntu换源ubuntu20.04系统自带源直接安装是MySQL8.0,我要安装MySQL5.7的版本的所以先进行换源。1.1备份原来的sorce文件sudocp/etc/apt/sources.list/etc/apt/sources.list.old1.2修改sources.list文件sudovim/etc/apt/sources.list我选择的是
关键词分析工具:关键词分析工具
rakuten:rakuten
卖家侵权案件频发,如何规避出口产品侵权问题?:卖家侵权案件频发,如何规避出口产品侵权问题?
惠州巽寮湾最有特色的美食是那些?:惠州巽寮湾最有特色的美食是那些?
10天大促:lazada越南年货节大促招商已开启!:10天大促:lazada越南年货节大促招商已开启!

没有评论:

发表评论