数据库介绍与安装
01. 数据库服务概述介绍
(1)为啥架构里要搞数据库服务?
在逛网站时,咱们能看到两种情况:
- 静态访问:就像是跟朋友一起看一页一页的漫画书,这过程里页面是按照一定的结构、颜色、排版、互动形式展现出来——比如用那些能让网页有模有样的“
.html
”文件,有负责打扮页面的“css”风格代码,还有能让网页晃晃悠悠动起来的“js”交互设计。 - 动态访问:主要是为了能跟网页互动,像在论坛上登录、注册、评论、上传资料、提交表单啥的。这时候产生的数据信息得存起来,比如文档数据就塞进一个能通过网络共享文件的“nfs”服务里,至于字符之类的数据,就靠数据库服务来存进去、拿出来。
(2)数据库服务是个啥结构?
- 结构组成:有客户端和服务器端。客户端包括能发命令、用工具操作、写代码的玩意儿,用来给服务器端发送操作请求;服务器端是以一种进程的形式存在,负责处理客户端的请求,然后对数据进行各种操作。
- 应用组成:包括管数据的“数据管理系统”,就像管仓库的管理员;然后是“数据库”本身,就是一个按照数据结构来组织、存储和管理数据的仓库;再往下就是“数据表”,这是在数据库里以行和列形式存储数据的家伙;最后是“字段”,就是数据表里的每一列,用来存特定类型的数据,有时候也可以叫“键”。
(3)数据库服务都分哪些类型?
- 关系型数据库:比如“mysql”,它是一种很流行的开源关系型数据库管理系统,很多做网站开发的人都用它;还有“oracle”,这是个很厉害的商业关系型数据库,功能特别强大,适合大公司用;“mariadb”是 mysql 的一个分支,一直保持开源,让大家都能用;“pgsql”就是“postgresql”,是一种很强的开源关系型数据库系统。这类数据库的好处是能安全地存数据,还能通过表和表之间的关系来管理数据,就像把数据都按一定联系排好队一样。
- 非关系型数据库:像“redis”,是个开源的内存数据存储系统,经常用来做缓存、消息队列;还有“mongodb”,是一种面向文档的 NoSQL 数据库,用来处理那些没固定结构的大数据特别好。这些数据库更看重数据存储和查询的效率,尤其是能轻松应对那种很多人同时访问、数据量特别大的情况。
- 分布式数据库:比如“oceanbase”,是蚂蚁集团自己搞出来的分布式数据库,能保证数据高可用、强一致;“tidb”是开源的分布式关系型数据库,兼容 mysql 协议;还有“opengauss”,是国产的开源关系型数据库,性能高、可用性也高。这类数据库又安全又快,能应付大规模数据存储和高并发访问的需求,就像能同时招待很多客人的大饭店一样。
02. 数据库服务安装部署
数据库服务的安装有多种方式,以下为您详细介绍:
yum 安装软件程序:
这种方式需要先配置好 yum 源,比如阿里云的 yum 源。yum 是 Linux 系统中常用的软件包管理器。
- 优势:操作起来简单又快捷。它能够自动检测并解决软件安装过程中的依赖关系。也就是说,当安装的数据库服务需要其他一些软件组件支持时,yum 会帮您一并下载并安装好,无需手动逐个查找和安装这些依赖项。
- 劣势:使用 yum 安装必须保持网络连接状态,因为它要从配置好的源服务器上下载软件包和相关依赖。如果所处环境没有网络,就无法使用这种安装方式。
rpm 安装软件程序:
该方式要先从官网下载 rpm 软件包。rpm 是 Red – Hat Package Manager(红帽软件包管理器)的缩写,在一些 Linux 系统中常用。下载好软件包后,通过 rpm -ivh
命令来安装。
- 优势:最大的好处就是可以离线安装。如果您所处的环境不能联网,或者出于安全等因素考虑不能连接外部网络,那么可以在有网络的地方提前下载好 rpm 包,然后在目标机器上进行安装。
- 劣势:它无法自动解决软件的依赖关系。安装时,如果缺少某些依赖组件,就需要手动去查找和安装。而且不同的 Linux 系统环境,对应的 rpm 包可能也不一样,这就需要根据实际系统情况来选择合适的 rpm 包。
源码编译安装软件:
首先要从官网或其他可靠渠道下载源码包,然后进行编译安装。
- 优势:这种方式允许您进行定制化部署。您可以根据自己的具体需求,对数据库的一些功能进行调整和配置。对于有数据库二次开发需求的用户来说,源码编译安装提供了很大的灵活性,可以在源码基础上进行修改和扩展。
- 劣势:安装过程相对复杂,需要您具备一定的技术知识和操作经验。不仅要熟悉编译工具和相关命令,而且整个安装时间通常比较长,因为它涉及到编译等多个步骤。
二进制方式安装:
需要先下载二进制包。二进制包是已经编译好的可执行文件集合。
- 优势:通用性比较强,在不同的系统环境中,只要系统架构等条件符合要求,一般都可以使用相同的二进制包进行安装,不需要像 rpm 包那样考虑不同系统的差异。
- 劣势:同样需要解决依赖问题。虽然二进制包本身是可执行的,但它在运行时可能依赖于一些系统库或其他软件组件,这些依赖项需要手动去安装和配置。
03.如何挑选适合的mysql包
- 本文档为二进制安装方式
第一步:下载数据库软件包
官方网站:https://www.mysql.com/
下载页面:https://www.mysql.com/downloads/
文档页面:https://dev.mysql.com/doc/
MySQL二进制程序包下载链接:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
04. 操作系统环境准备
关闭系统安全服务
在进行数据库相关操作前,我们需要先关闭一些可能影响数据库服务的系统安全服务。
1.关闭系统防火墙服务
[root@db01 ~]# systemctl stop firewalld
[root@db01 ~]# systemctl disable firewalld
2.禁用系统selinux功能
[root@db01 ~]# setenforce 0
[root@db01 ~]# sed -i '7s#enforcing#disabled#g' /etc/selinux/config
创建数据库服务管理用户
我们要创建一个专门用于管理数据库服务的用户。使用命令 useradd mysql -M -s /sbin/nologin
来创建名为 mysql
的用户。其中 -M
选项表示不创建用户的家目录,-s /sbin/nologin
选项表示该用户不能用于登录系统,只是作为数据库服务的管理用户。
[root@db01 ~]# useradd mysql -M -s /sbin/nologin
创建数据库服务数据目录
数据库需要有一个地方来存放数据。使用命令 mkdir -p /data/3306/data
[root@db01 ~]# mkdir -p /data/3306/data
[root@db01 ~]# chown mysql.mysql /data/3306/data
卸载系统中默认数据库程序(根据自身系统情况调整)
系统中可能自带了一些默认的数据库程序,为了避免和我们即将安装的数据库产生冲突,需要先卸载它们。
- 首先,使用
rpm -qa|grep mysql
命令查找系统中所有名称包含mysql
的已安装程序包。 - 然后,执行
yum remove -y
rpm -qa|grep mysql` 命令,自动卸载所有查找到的与
mysql相关的程序包,
-y` 选项表示在卸载过程中不需要用户确认。
[root@db01 ~]# rpm -qa | grep mysql
[root@db01 ~]# yum remove -y `# rpm -qa | grep mysql`
[root@db01 ~]# rpm -qa | grep mariadb
[root@db01 ~]# yum remove -y `rpm -qa | grep mariadb`
安装软件程序依赖(CentOS 7 系统)
数据库服务运行需要一些软件依赖支持。在 CentOS 7 系统中,使用 yum install -y libaio-devel
命令安装名为 libaio-devel
的软件包,这个软件包提供了异步 I/O 相关的开发库,对于数据库的性能等方面有帮助。
[root@db01 ~]# yum install -y libaio-devel
05.安装部署(二进制包)
1. 上传二进制包
首先,你要把数据库的二进制包上传到 Linux 系统里,具体上传到/usr/local
这个目录。这个目录通常用于存放用户自己安装的软件,是个比较合适的位置。
3. 解压二进制包
现在,我们要把这个压缩包解压出来,使用tar
命令进行解压:
tar xf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
这个命令会把压缩包解压到当前目录,也就是/usr/local
目录下。
4. 创建软链接
解压后的文件夹名字比较长,为了方便后续使用,我们可以创建一个软链接,就像给它起了个简单的别名一样。使用以下命令创建软链接:
ln -s mysql-8.0.36-linux-glibc2.12-x86_64 mysql
这样,以后我们就可以直接使用mysql
这个名字来代表mysql-8.0.36-linux-glibc2.12-x86_64
这个文件夹了。这里的bin/mysql
程序命令可以用来登录数据库。
5. 配置环境变量
为了能够在任何位置都可以直接使用mysql
命令,我们需要把mysql
的可执行文件所在目录添加到系统的环境变量里。编辑/etc/profile
这个文件:
vim /etc/profile
在文件里添加一行内容:
注意:这里是$PATH加上mysql,不要少$要不然系统其他命令都不能用了
export PATH="$PATH:/usr/local/mysql/bin"
这行代码的意思是,把/usr/local/mysql/bin
这个目录添加到系统的PATH
环境变量中,这样系统在查找命令时就会去这个目录里找mysql
命令了。
6. 使环境变量生效
编辑完文件后,需要让修改后的环境变量立即生效,使用以下命令:
source /etc/profile
7. 验证安装
最后,我们可以验证一下mysql
是否安装成功,使用以下命令查看mysql
的版本信息:
mysql -V
如果能正确显示mysql
的版本号,那就说明整个安装部署过程都成功啦。
06.数据库服务初始化过程
在这一步,我们要完成数据库服务的初始化工作,主要包含两个重要方面:一是创建数据库的默认数据信息,二是让数据库服务能够正常运行启动。
1. 创建数据库默认数据信息
首先,我们需要指定一个空目录来存放数据库的默认数据,这里我们选择的目录是/data/3306/data
。要确保这个目录是空的,因为后续初始化过程会在这个目录下生成数据库所需的各种文件。
2. 数据库服务初始化命令及参数说明
接下来,使用下面这个命令来进行数据库服务的初始化:
mysqld --initialize-insecure --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
或者,推荐下面这种
mysqld --initialize --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
下面给你详细解释一下这个命令里各个参数的作用:
--initializ-insecure
:这个参数表示进行不安全初始化。什么意思呢?就是初始化完成后,数据库不会设置默认密码,你可以直接免密登录数据库。要是你使用--initialize
这个参数,那就是进行安全初始化,数据库会设置一个默认密码,后续你还得重新设置新密码才行。--user=mysql
:它的作用是指定创建数据库默认数据的属主和属组,同时也指定了数据库进程管理的用户信息。简单来说,就是规定了谁来管理和使用这些数据库数据。--datadir
:这个参数用来指定数据库存储和加载数据的目录,我们这里指定的是/data/3306/data
,也就是前面提到的那个空目录。数据库的数据都会存放在这个目录里。--basedir
:它指定的是数据库二进制程序所在的目录,这里设置为/usr/local/mysql
,数据库在运行时会从这个目录里调用相关的程序文件。
07.编写数据库服务配置文件
在完成数据库服务初始化之后,接下来要编写数据库服务的配置文件。编写这个配置文件有两个重要作用,一是可以设置数据库服务的各种功能,并且让这些功能永久生效;二是能让数据库服务进程正确加载并按照我们的配置来运行。
配置文件编写命令
我们使用下面这个命令来创建并编写配置文件 /etc/my.cnf
:
cat >/etc/my.cnf <<eof
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
eof
配置文件内容详细解释
这是一个配置标签信息,代表这部分配置是针对数据库服务端的。除了服务端配置标签,还有客户端配置标签,不同的标签用于区分不同类型的配置。
[mysqld]
这行指定了数据库进程的用户信息。也就是说,数据库服务在运行的时候,是以 mysql
这个用户的身份来运行的。
user=mysql
这里设置的是加载程序的目录。在 Linux 系统中,一个系统可能会同时存在多个版本的 MySQL 数据库,像 MySQL 5.6、MySQL 5.7、MySQL 8.0 等,通过这个配置可以明确告诉数据库从哪个目录去加载对应数据库的程序文件。
basedir=/usr/local/mysql
这行配置的是加载数据的目录。数据库在运行过程中,会从这个目录里读取和存储数据,这个目录就是我们在前面初始化过程中指定的那个存放默认数据的目录。
datadir=/data/3306/data
这是配置连接数据库的 socket
文件路径。socket
就像是客户端和服务端之间通信的桥梁,通过这个配置,客户端命令就可以连接并访问数据库服务端了,sock错了会导致连接不上登录不上。
socket=/tmp/mysql.sock
08.启动运行数据库服务
在完成数据库的安装、初始化以及配置文件编写之后,接下来就需要启动数据库服务,让它开始工作啦。这里我们通过编写 shell 脚本文件的方式来启动数据库服务,下面一步步给你介绍具体操作。
找到并确认脚本文件
首先,我们要找到 MySQL 提供的启动脚本文件。使用 file
命令来查看 /usr/local/mysql/support-files/mysql.server
这个文件的类型:
file /usr/local/mysql/support-files/mysql.server
执行命令后,输出结果可能是:
/usr/local/mysql/support-files/mysql.server: POSIX shell script, ASCII text executable
这表明该文件是一个可执行的 POSIX shell 脚本,也就是我们可以用它来启动数据库服务。
复制脚本文件到指定目录
为了方便后续操作,我们把这个脚本文件复制到 /etc/init.d/
目录下,并命名为 mysqld
,使用以下命令:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
利用脚本文件运行服务
现在有几种不同的方式可以使用这个脚本文件来启动和停止数据库服务,下面分别介绍:
方式一:直接加载脚本启动数据库服务
使用 /etc/init.d/mysqld
脚本加上相应的参数来启动或停止服务:
- 启动数据库服务:
/etc/init.d/mysqld start
- 停止数据库服务:
/etc/init.d/mysqld stop
方式二:使用 service
命令启动数据库服务
service
命令是一个比较常用的管理系统服务的命令,同样可以用来启动和停止 MySQL 服务:
- 启动数据库服务:
service mysqld start
- 停止数据库服务:
service mysqld stop
方式三:使用 systemctl
命令启动数据库服务
systemctl
是系统服务管理器指令,用于管理系统服务。我们可以使用它来启动、停止以及设置服务开机自启:
- 设置数据库服务开机自启:
- 需要先执行enable
systemctl enable mysqld
- 启动数据库服务:
systemctl start mysqld
- 停止数据库服务:
systemctl stop mysqld
手动创建并启动 systemd
服务单元文件(可选)
有时候我们可能需要手动创建一个 systemd
服务单元文件。使用 vim
编辑器创建并编辑 /usr/lib/systemd/system/mysql.service
文件:
vim /usr/lib/systemd/system/mysql.service
编辑完成后,需要重新加载 systemd
的配置文件,让新的服务单元文件生效:
systemctl daemon-reload
最后,使用 systemctl
命令启动 MySQL 服务:
systemctl start mysql
数据库密码管理
1)设置密码信息
利用命令设置密码
可以使用 mysqladmin
命令来为数据库的 root
用户设置密码。执行以下命令:
mysqladmin -uroot password '123123'
这里的 -u
表示指定用户名,root
就是我们要设置密码的用户;password
后面跟着的 '123123'
就是我们要设置的新密码。
利用 SQL 语句设置密码
除了使用命令,还能通过 SQL 语句来设置密码。在数据库的命令行中执行以下 SQL 语句:
alter user root@'localhost' identified by '321321';
这条语句的意思是,将 root
用户在 localhost
这个主机上登录时的密码修改为 321321
。
2)修改密码信息
利用命令设置密码
当你需要修改密码时,同样可以使用 mysqladmin
命令。假设当前密码是 321321
,要将其修改为 456456
,执行以下命令:
mysqladmin -uroot -p321321 password '456456'
这里的 -p
后面跟着当前的密码 321321
,然后再指定新密码 '456456'
。
利用 SQL 语句设置密码
也可以用 SQL 语句来修改密码。在数据库命令行中执行
alter user root@'localhost' identified by '321321';
和设置密码时的语句类似,只是这里把密码改成你想要的新密码。
3)重置密码信息
如果你忘记了数据库的密码,就需要进行密码重置。下面是具体的步骤:
步骤一:关闭数据库服务
首先要把正在运行的数据库服务关闭,使用以下命令:
/etc/init.d/mysqld stop
步骤二:采用安全模式启动数据库(免密登录)
以安全模式启动数据库,这样就可以免密登录了。执行以下命令:
&为后台执行,不需要重新开一个窗口了
mysqld --skip-grant-tables --skip-networking &
--skip-rant-tables
:这个参数表示启动数据库时不会加载授权表,这样在登录时就不需要密码了。--skip-networking
:这个参数是可选的,它表示启动数据库时只会创建进程信息,不会生成网络端口信息,增强了安全性。
步骤三:重置密码信息
这条语句的作用是重新将磁盘上的授权表加载到内存中。
flush privileges;
将 root
用户在 localhost
上登录的密码重置为 012012
。
alter user root@'localhost' identified by '012012';
步骤四:重新正常启动数据库服务
重启数据库,并用新密码登录
systemctl stop mysqld
systemctl start mysqld
mysql -uroot -p012012
数据库服务用户管理
一、操作系统环境与数据库服务中的用户表示
在操作系统环境中,用户信息通常通过类似以下的方式表示:
- 用户名称:haoshuaicong,xiaoQ
而在数据库服务中,用户信息的表示方式有所不同,需包含主机域/白名单信息,以指定允许登录服务端的地址:
- 用户名称@’白名单/主机域’
例如:
- haoshuaicong@’localhost’:表示该用户仅能从本地(与数据库服务器同一主机)登录。
- haoshuaicong@’10.0.0.52’:表示该用户仅能从 IP 地址为 10.0.0.52 的客户端主机登录。
二、设置用户主机域/白名单信息的方式
方式一:设置本地用户可以登录访问
- 用户名@’localhost’:允许从本地主机登录。
- 用户名@’127.0.0.1’:与 localhost 相似,通过 IP 地址限制为本地登录。
方式二:设置远程用户可以登录访问
- 允许单个客户端用户访问:
- 用户名@’10.0.0.52’:指定仅允许 IP 地址为 10.0.0.52 的客户端登录。
- 用户名@’db02’:允许主机名为 db02 的客户端登录。
- 允许特定网段内的主机访问:
- 用户名@’10.0.0.%’:允许 10.0.0.x 网段(10.0.0.1 至 10.0.0.254)内的任何主机登录。
- 用户名@’10.0.%’:允许 10.0.x.x 网段(10.0.0.1 至 10.0.255.254)内的任何主机登录。
- 允许较宽范围的网段访问:
- 用户名@’10.%’:允许 10.x.x.x 网段(10.0.0.1 至 10.255.255.254)内的任何主机登录。
- 允许所有客户端主机访问:
- 用户名@’%’:允许来自任何 IP 地址的客户端主机登录。
三、如何创建用户信息
在数据库中创建用户时,可以指定用户名称和白名单信息,并可设置密码。
1. 创建用户的基本语法
- 创建无密码的用户(不推荐,存在安全隐患):
create user 用户名@'白名单';
- 完整创建带有密码的用户:
create user 用户名@'白名单' identified by '密码';
2. 示例创建本地与远程登录用户
- 创建本地登录用户(只能从本地主机登录):
create user xiaoA@'localhost' identified by '123456';
- 创建远程登录用户(以 xiaoB 为例,允许从特定 IP 或网段登录):
create user xiaoB@'10.0.0.52' identified by '123456'; -- 允许单个 IP 客户端
create user xiaoB@'test' identified by '123456'; -- 允许主机名为 test 的客户端
create user xiaoB@'10.0.0.%' identified by '123456'; -- 允许 10.0.0.x 网段内的所有主机
四、如何查看用户信息
1. 查看所有用户信息
在数据库中执行以下 SQL 语句,可查看所有用户的用户名、主机和密码保存信息(密码会加密存储):
mysql> select user, host, authentication_string from mysql.user;
2. 查看当前登录用户信息
在数据库会话中执行以下命令,可查看当前正在登录的用户名:
mysql> select user();
五、如何删除用户信息
1. 安全删除用户
使用 drop user
命令可安全删除用户:
drop user 用户名@'白名单';
例如:
drop user test@'10.0.0.52';
2. 使用 delete
命令删除用户(不推荐,风险较高)
直接操作数据库表(如 mysql.user)删除用户数据,若操作不当,可能引发数据混乱或丢失:
delete from mysql.user where user='test' and host='20.0.0.%';
六、本地和远程用户的登录方式
本地用户登录
mysql -u用户名称 -p密码信息
输入上述命令后,根据提示输入密码即可登录。
远程用户登录
mysql -u用户名称 -p密码信息 -h数据库服务端地址 -P数据库服务端口
-h
参数指定数据库服务器的 IP 地址或主机名。-P
参数指定数据库服务器的端口号(默认为 3306,若未更改可省略)。
数据库权限管理
一、数据库系统中的权限设置
在数据库系统中,可以设置多种权限,以控制用户对数据库的操作权限。以下是常见的权限及其作用:
show privileges;
权限名称 | 操作对象 | 描述 |
---|---|---|
Alter | Tables | 修改表的属性信息 |
Create | Databases, Tables, Indexes | 创建新的数据库和数据表 |
Create user | Server Admin | 创建新用户 |
Delete | Tables | 删除表中的数据 |
Drop | Databases, Tables | 删除数据库、表和视图 |
Grant option | Databases, Tables | 将自己拥有的权限授予其他用户 |
Insert | Tables | 向表中插入数据 |
Select | Tables | 查询表中的数据 |
Show databases | Server Admin | 查看所有数据库信息 |
Update | Tables | 修改表中的数据 |
Usage | Server Admin | 无权限,仅允许登录数据库 |
二、如何设置用户权限
1. 设置用户权限的基本语法
grant 权限01, 权限02, 权限03, ... on 操作对象 to 用户名@'白名单';
- 权限:如
Select
,Insert
,Update
等。 - 操作对象:
*.*
:表示可以管理所有库及库中的所有表。库名.*
:表示可以管理指定库及库中的所有表。库名.表名
:表示可以管理指定库中的指定表。
2. 示例:针对不同角色设置权限
- 针对管理员(DBA):授予所有权限
grant all on *.* to xiaoA@'localhost';
- 针对运维人员(SA):授予部分权限
grant Alter, Create, Delete, Drop, Insert, Select, Update on www.* to xiaoB@'localhost';
- 针对开发人员(DEV):授予有限权限
grant Delete, Insert, Select, Update on www.t1 to xiaoC@'localhost';
3. 彩蛋:MySQL 8.0 版本的变化
- MySQL 8.0 之前版本:可以在授权命令中直接创建用户并授权
grant select on *.* to xiaoA@'localhost' identified by '123456';
- MySQL 8.0 之后版本:授权和用户创建需要分开执行
create user xiaoA@'localhost' identified by '123456';
grant select on *.* to xiaoA@'localhost';
三、如何查看用户权限
查看用户的权限,可以使用以下命令:
show grants for 用户信息;
例如:
show grants for xiaoA@'localhost';
四、如何撤销用户权限
如果需要撤销用户的某些权限,可以使用以下命令:
revoke 权限 on 操作对象 from 用户名@'白名单';
例如:
revoke DROP on `www`.* from `xiaoB`@`localhost`;
五、总结
- 设置权限:使用
grant
命令,指定权限、操作对象和用户。 - 查看权限:使用
show grants
命令,查看用户的权限。 - 撤销权限:使用
revoke
命令,撤销用户的某些权限。
六、课程作业:
- 数据库服务其他安装方式(yum rpm 源码包)
- 如何编写数据库服务 service 文件
- 当用户授权后,授权信息记录到什么地方(数据库都有什么授权表)
- 整理数据库思维导图
今日命令和单词
命令:
setenforce 0
source /etc/profile
mysql -V
mysqld --initialize-insecure --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
systemcl daemon-reload
alter user root@'localhost' identified by '321321';
mysqladmin -uroot -p321321 password '456456'
mysqld --skip-grant-tables --skip-networking &
flush privileges;
create user 用户名@‘白名单’ identified by '密码';
mysql -u用户名称 -p密码信息 -h数据库服务端地址 -P数据库服务端口
select user,host,authentication_string from mysql.user;
select user();
drop user 用户名@‘白名单’;
delete from mysql.user where user='test' and host='20.0.0.%';
grant 权限01,权限02,权限03.. on 操作对象 to 用户名@'白名单'
show grants for 用户信息
revoke DROP on \www`.* from `xiaoB`@`localhost`;`
create user 用户名@'白名单' identified by '密码';
select user,host from mysql.user;
drop user 用户名@'白名单';
delete from mysql.user where user='hsc';
alter user root@'localhost' identified by '321321';
grant 权限01, 权限02, 权限03, ... on 操作对象 to 用户名@'白名单';
show grants for 用户信息;
revoke 权限 on 操作对象 from 用户名@'白名单';
flush privileges;
select user();
mysqld --skip-grant-tables --skip-networking &
mysqld --initialize --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
单词:
database(数据库)
permission(权限)
deploy(部署)
binary(二进制)
configure(配置)
initialize(初始化)
client(客户端)
server(服务端)
process(进程)
security(安全)
socket(套接字)
basedir(基础目录)
datadir(数据目录)
restore(恢复)
privilege(权限)
grant(授予)
revoke(撤销)
select(选择)
insert(插入)
delete(删除)
create(创建)
drop(删除)
alter(修改)
authentication(认证)
string(字符串)
environment(环境)
variable(变量)
compile(编译)
distribution(发行版)
oracle(数据库名称)
pgsql(数据库名称)
redis(数据库名称)
mongodb(数据库名称)
oceanbase(数据库名称)
tidb(数据库名称)
opengauss(数据库名称)
relation(关系)
non-relation(非关系)
distributed(分布式)