我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在Ubuntu 20.04上安装MySQL教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在Ubuntu 20.04上安装MySQL教程

在Ubuntu上安装MySQL

MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。

先决条件

确保您以具有sudo特权的用户身份登录。

安装MySQL

更新列表

sudo apt-get updatesudo apt-get upgrade

安装MySQL服务器

sudo apt-get install mysql-server

/*在安装过程中,系统将提示您创建root密码。选择一个安全的,并确保记住它,因为后面需要用到这个密码。*实际操作中并未要求我创建密码/

安装MySQL客户端

sudo apt-get install mysql-client

mysql-server和mysql-client区别

mysql-server 是MySQL核心程序将安装MySQL数据库服务器,用于生成管理多个数据库实例,持久保存数据并为其提供查询接口(SQL),供不同客户端调用。

mysql-client 是操作数据库实例的工具,允许连接到MySQL服务器使用该查询接口。它将为您提供MySQL命令行程序。

如果只需要连接到远程服务器并运行查询,只安装mysql-client就可以了。如果是服务器只提供连接服务的只需要安装mysql-server

配置MySQL

运行MySQL初始化安全脚本

sudo mysql_secure_installation

系统将要求您配置VALIDATE PASSWORD PLUGIN用来测试MySQL用户密码强度并提高安全性的密码:

Securing the MySQL server deployment.Connecting to MySQL using a blank password.VALIDATE PASSWORD COMPONENT can be used to test passwordsand improve security. It checks the strength of passwordand allows the users to set only those passwords which aresecure enough. Would you like to setup VALIDATE PASSWORD component?Press y|Y for Yes, any other key for No: y

密码验证策略分为三个级别:低,中和强。按下y如果你想设置的验证密码插件或任何其他键移动到下一个步骤:

There are three levels of password validation policy:LOW Length >= 8MEDIUM Length >= 8, numeric, mixed case, and special charactersSTRONG Length >= 8, numeric, mixed case, special characters and dictionary filePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

在下一个提示符下,将要求您设置MySQL root用户的密码:

Please set the password for root here.New password: Re-enter new password: 

如果您设置了验证密码插件,该脚本将向您显示新密码的强度。键入y以确认密码:

Estimated strength of the password: 50 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

mysql_secure_installation脚本设置的东西:更改root密码移除MySQL的匿名用户禁止root远程登录删除test数据库和重新加载权限。除了询问是否要更改root密码时,看情况是否需要更改,其余的问题都可以按Y,然后ENTER接受所有后续问题的默认值。使用上面的这些选项可以提高MySQL的安全。

测试MySQL

无论你如何安装它,MySQL应该已经开始自动运行。要测试它,请检查其状态。

sudo systemctl status mysql.service

将看到类似于以下内容的输出:

● mysql.service - MySQL Community Server   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)   Active: active (running) since Wed 2016-11-23 21:21:25 UTC; 30min ago Main PID: 3754 (mysqld)    Tasks: 28   Memory: 142.3M      CPU: 1.994s   CGroup: /system.slice/mysql.service           └─3754 /usr/sbin/mysqld

MySQL数据库基本使用

我们已经向您展示了如何在Ubuntu 20.04上安装MySQL。现在您的数据库服务器已启动并正在运行,下一步是学习如何管理MySQL用户帐户和数据库

启动MySQL数据库服务

sudo service mysql start或sudo systemctl start mysql.service

重启MySQL数据库服务

sudo service mysql restart或sudo systemctl restart mysql.service

停止MySQL数据库服务

sudo service mysql stop或sudo systemctl stop mysql.service

查看MySQL运行状态

sudo service mysql status或sudo systemctl status mysql.service

设置MySQL服务开机自启动

sudo service mysql enablesudo systemctl enable mysql.service

停止MySQL服务开机自启动

sudo service mysql disable或sudo systemctl disable mysql.service

配置MySQL远程登录

有时候,为了开发方便,我们需要使用本地电脑远程访问和管理MySQL数据库。默认情况下,为了安全MySQL只允许本地登录,如果要开启远程连接,则需要修改MySQL的配置文件

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

打开配置文件,找到bind-address = 127.0.0.1这一行
改为bind-address = 0.0.0.0即可或简单一点注释掉也行

修改完成保存后,需要重启MySQL服务才会生效

接着需要为用户赋予远程登录的权限,使用以下用户授权步骤即可

systemctl和service的区别

Linux 服务管理两种方式service和systemctl,以前都用service命令管理mysql,现在liunx系统升级了,又有了新的更好的方法管理系统进程,现在使用systemctl命令管理mysql。

service是一个脚本命令,分析service可知是去/etc/init.d目录下执行相关程序。service和chkconfig结合使用。
服务配置文件存放目录/etc/init.d/

Systemd是一个系统管理守护进程、工具和库的集合,是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。
Systemd对应的进程管理命令是systemctl,主要负责控制Systemd系统和服务管理器。同时兼容service命令。

在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。

MySQL创建用户与授权

以root身份登录

要从命令行与MySQL服务器进行交互,请使用MySQL客户端实用程序,该实用程序是作为MySQL服务器软件包的依赖项安装的。

在MySQL 8.0上,auth_socket默认情况下,root用户通过插件进行身份验证。

auth_socket插件对localhost通过Unix套接字文件从进行连接的用户进行身份验证。这意味着您不能通过提供密码来以root用户身份进行身份验证。

要以root用户身份登录到MySQL服务器,请输入:

sudo mysql

将为您提供MySQL Shell,如下所示:

Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 12Server version: 8.0.19-0ubuntu5 (Ubuntu)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

如果要使用外部程序(例如phpMyAdmin)以root用户身份登录到MySQL服务器,则有两个选择。

第一个是将身份验证方法从更改auth_socketmysql_native_password。您可以通过运行以下命令来做到这一点:

mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password';mysql > FLUSH PRIVILEGES;

推荐的第二个选项是创建一个新的专用管理用户,该用户可以访问所有数据库:

GRANT ALL PRIVILEGES ON *.* TO 'administrator'@'localhost' IDENTIFIED BY 'very_strong_password';

使用root用户登录

mysql -u root -p

退出MySQL命令行

mysql> quit

创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

注意,使用%通配符创建外网访问用户后,登录时需要明确访问的IP地址,例如

mysql -u test -h 115.28.203.224 -p

例子

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';CREATE USER 'pig'@'192.168.1.101' IDENDIFIED BY '123456';CREATE USER 'pig'@'%' IDENTIFIED BY '123456';CREATE USER 'pig'@'%' IDENTIFIED BY '';CREATE USER 'pig'@'%';

用户授权

GRANT privileges ON databasename.tablename TO 'username'@'host';

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名
如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

注意:用以上命令授权的用户不能给其它用户授权,如果想让被授权的用户可以将他的拥有的权限授给其他用户,用以下命令

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

刷新授权

flush privileges;

这一步一定要做,不然无法成功!这句表示从mysql数据库的grant表中重新加载权限数据,因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。

例子

GRANT SELECT, INSERT privileges ON test.user TO 'pig'@'%';GRANT ALL privileges ON *.* TO 'pig'@'%';GRANT ALL privileges ON maindataplus.* TO 'pig'@'%';

设置与更改用户密码

ALTER USER 'username'@'host' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;  

撤销用户权限

REVOKE privileges ON databasename.tablename FROM 'username'@'host';

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名
如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

例子

REVOKE SELECT privileges ON *.* FROM 'pig'@'%';

注意

假如你在给用户’pig’@‘%‘授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO ‘pig’@’%’,则在使用REVOKE SELECT ON *.* FROM ‘pig’@‘%’;命令并不能撤销该用户对test数据库中user表的SELECT 操作。

相反,如果授权使用的是GRANT SELECT ON *.* TO ‘pig’@‘%’;则REVOKE SELECT ON test.user FROM ‘pig’@‘%’;命令也不能撤销该用户对test数据库中user表的Select权限。

具体信息可以用命令SHOW GRANTS FOR ‘pig’@‘%’; 查看。

删除用户

DROP USER 'username'@'host';

查看用户信息

切换mysql数据库

use mysql;

查询用户表

SELECT User, Host FROM user;+------------------+-----------+| User             | Host      |+------------------+-----------+| diming           | %         || debian-sys-maint | localhost || mysql.session    | localhost || mysql.sys        | localhost || root             | localhost |+------------------+-----------+5 rows in set (0.00 sec)

查看用户权限

show grants for 'username'@'host';

例子

show grants for 'root'@'localhost';+---------------------------------------------+| Grants for root@localhost|+---------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION || GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION|+---------------------------------------------+2 rows in set (0.00 sec)

查看加密的规则

select Host,User,plugin from mysql.user;

img

修改加密方式

ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';

mysql_native_password:加密方式

password:用户密码

创建数据库

登录root用户后,使用 create 命令创建数据库,语法如下:

CREATE DATABASE 数据库名;

删除数据库

DROP DATABASE 数据库名称;

MySQL查看信息

使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小、字符集、用户等等。下面总结了一些查看数据库相关信息的命令。

查看显示所有数据库

show databases;

查看当前使用的数据库

select database();

查看数据库使用端口

show variables like 'port';

查看数据库的表信息

show tables;

查看表结构

show columns from table_name;describe table_name;

显示表结构,字段类型,主键,是否为空等属性,但不显示外键。

查看表生成的DDL

DDL(data definition language)数据库定义语言:其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化。

show create table table_name;

该命令把创建表的DDL,表结构、类型,外键,备注等全部显示出来。

查看Mysql数据库大小

进入information_schema 数据库(存放了其他的数据库的信息)

use information_schema;

查询所有数据的大小

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;

查看指定数据库的大小

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='数据库名称';

查看指定数据库的某个表的大小

select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='数据库名称' and table_name='表名称';

查看索引所占的空间大小

select concat(round(sum(index_length/1024/1024),2),'MB') as data from tables where table_schema='mysql';

查看数据文件存放路径

show variables like '%datadir%';

查看数据库编码

show variables like 'character%';+--------------------------+|Variable_name|Value|+--------------------------+| character_set_client     | utf8|| character_set_connection | utf8|| character_set_database   | utf8|| character_set_filesystem | binary|| character_set_results    | utf8|| character_set_server     | latin1|| character_set_system     | utf8|| character_sets_dir       | /usr/share/mysql/charsets/ |+--------------------------+8 rows in set (0.00 sec)

character_set_client 为客户端编码方式;

character_set_connection 为建立连接使用的编码;

character_set_database 为数据库的编码;

character_set_results 为结果集的编码;

character_set_server 为数据库服务器的编码;

查看数据库的最大连接数

show variables like '%max_connections%';

查看数据库当前连接数,并发数

show status like 'Threads%';+-------------------+-------+| Variable_name     | Value |+-------------------+-------+| Threads_cached    | 0     || Threads_connected | 27    || Threads_created   | 48    || Threads_running   | 1     |+-------------------+-------+4 rows in set (0.00 sec)

Threads_cached 代表当前此时此刻线程缓存中有多少空闲线程。

Threads_connected 代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。

Threads_created 代表从最近一次服务启动,已创建线程的数量。

Threads_running 代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。

来源地址:https://blog.csdn.net/m0_57165777/article/details/127977315

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在Ubuntu 20.04上安装MySQL教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在Ubuntu 20.04上安装OpenCV

这篇文章给大家分享的是有关如何在Ubuntu 20.04上安装OpenCV的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。从Ubuntu仓库安装OpenCV可从默认的Ubuntu 20.04仓库安装OpenCV。要
2023-06-15

如何在Ubuntu 20.04 LTS上安装Apache CouchDB

Apache CouchDB是由Apache软件基金会开发的一个免费的、开源的NoSQL数据库。它可以作为单节点或集群数据库使用。CouchDB服务器将其数据存储在命名的数据库中,其中包含JSON结构的文档。每个文档由一些字段和附件组成。字段可以包括文本、数字
如何在Ubuntu 20.04 LTS上安装Apache CouchDB
2019-03-30

安装Ubuntu 20.04后要做的事(小白教程)

Ubuntu 20.04发布了,带来了很多新特性,同样也依然带着很多不习惯的东西,所以装完系统后还要进行一系列的优化。 1.删除libreofficelibreoffice虽然是开源的,但是java写出来的office执行效率实在不敢恭维,
2022-06-04

Ubuntu 20.04 CUDA&cuDNN安装方法(图文教程)

CUDA安装下载cuda 输入nvidia-smi命令查看支持的cuda版本如果无法查看,则说明尚未安装nvidia驱动,点击附加驱动,选择对应版本的驱动即可自动下载。从https://developer.nvidia.com/cuda-t
2022-06-04

Ubuntu 22.04或20.04安装Oracle SQL Developer的图文教程

目录决条件步骤 1:安装 Java 开发工具包第 2 步:下载 oracle SQL Developer步骤 3:在 Ubuntu 上安装 Oracle SQL Developer步骤 4:运行 SQL GUI步骤 5:创建命令和桌面快捷方
Ubuntu 22.04或20.04安装Oracle SQL Developer的图文教程
2024-08-12

怎么在Ubuntu 20.04 LTS上安装Deepin桌面环境

小编给大家分享一下怎么在Ubuntu 20.04 LTS上安装Deepin桌面环境,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在 Ubuntu 20.04 上安
2023-06-15

ubuntu篇---ubuntu安装mysql教程

ubuntu篇---ubuntu安装mysql教程 一. 首先卸载掉原来的mysql第一步,依次执行下面的语句第2步 清理残留数据第三步 验证原有主机上是否安装mysql: 二. 安装mysql三. 修改密码 加粗样式ubu
2023-08-16

在Ubuntu系统上安装Node.JS的教程

Node.js 在实时的 Web应用上采用了基于 WebSocket 的推送技术。这意味着什么样的革命性?Well,在经过了20多年的基于无状态的请求-返机制的无状态交互之后,我们终于有了实时的,双向连接的web应用,客户端和服务器端都可以
2022-06-04

在Ubuntu上安装pip3的简单教程

Ubuntu上安装pip3的简易教程Ubuntu是一种流行的Linux操作系统,它提供了丰富的软件库和工具,使得安装和配置开发环境变得更加简单和便捷。在Ubuntu上进行Python开发时,我们常常需要使用到pip工具来安装和管理Pyth
在Ubuntu上安装pip3的简单教程
2024-01-18

详解如何在Ubuntu 20.04上安装Xrdp服务器(远程桌面)

Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许你通过图形界面控制远程系统。通过 RDP,你可以登录远程机器,并且创建一个真实的桌面会话,就像你登录本地机器一样。 这篇指南讲解如何在 Ubuntu 20.04 上安装和配置 Xr
2022-06-04

在Ubuntu 20.04中如何安装deb文件

这篇文章主要介绍了在Ubuntu 20.04中如何安装deb文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在 Ubuntu 20.04 中安装 deb 文件由于某些原因,
2023-06-16

在 Ubuntu 上安装 Protobuf 3 的教程详解

什么时候需要安装 如果使用 protoc 命令,遇到 Protoc not found,表示未安装。或者,执行时出现错误:This parser only recognizes "proto2",则表示不是3.0版。 安装过
2022-06-04

如何解决无法在Ubuntu 20.04上安装Deb文件的问题

今天就跟大家聊聊有关如何解决无法在Ubuntu 20.04上安装Deb文件的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。deb 文件后无法通过 Ubuntu 20.04 的软件
2023-06-05

编程热搜

目录