diff --git "a/docs/zh/docs/Administration/\346\220\255\345\273\272\346\225\260\346\215\256\345\272\223\346\234\215\345\212\241\345\231\250.md" "b/docs/zh/docs/Administration/\346\220\255\345\273\272\346\225\260\346\215\256\345\272\223\346\234\215\345\212\241\345\231\250.md"
index 80d85be1119acf6529e16ef8e56199b0afc2bd2f..753cab1337ae8a13596228ef13b6084507b68814 100644
--- "a/docs/zh/docs/Administration/\346\220\255\345\273\272\346\225\260\346\215\256\345\272\223\346\234\215\345\212\241\345\231\250.md"
+++ "b/docs/zh/docs/Administration/\346\220\255\345\273\272\346\225\260\346\215\256\345\272\223\346\234\215\345\212\241\345\231\250.md"
@@ -1,5 +1,34 @@
# 搭建数据库服务器
+
+
+- [搭建数据库服务器](#搭建数据库服务器)
+ - [PostgreSql服务器](#postgresql服务器)
+ - [软件介绍](#软件介绍)
+ - [配置环境](#配置环境)
+ - [安装、运行和卸载](#安装运行和卸载)
+ - [管理数据库角色](#管理数据库角色)
+ - [管理数据库](#管理数据库)
+ - [Mariadb服务器](#mariadb服务器)
+ - [软件介绍](#软件介绍-1)
+ - [配置环境](#配置环境-1)
+ - [安装、运行和卸载](#安装运行和卸载-1)
+ - [管理数据库用户](#管理数据库用户)
+ - [管理数据库](#管理数据库-1)
+ - [MySQL服务器](#mysql服务器)
+ - [软件介绍](#软件介绍-2)
+ - [配置环境](#配置环境-2)
+ - [安装、运行和卸载](#安装运行和卸载-2)
+ - [管理数据库用户](#管理数据库用户-1)
+ - [管理数据库](#管理数据库-2)
+ - [openGauss服务器](#openGauss服务器)
+ - [软件介绍](#软件介绍-3)
+ - [安装](#安装-3)
+ - [管理数据库角色](#管理数据库角色-1)
+ - [管理数据库](#管理数据库-3)
+
+
+
## PostgreSql服务器
### 软件介绍
@@ -66,7 +95,7 @@ PostgreSQL的架构如[图1](#fig26022387391)所示,主要进程说明如[表1
PgStat(统计收集)
@@ -84,118 +113,114 @@ PostgreSQL的架构如[图1](#fig26022387391)所示,主要进程说明如[表1
### 配置环境
-> **说明:**
->以下环境配置仅为参考示例,具体配置视实际需求做配置。
->
+> **说明:**
+>以下环境配置仅为参考示例,具体配置视实际需求做配置
+
#### 关闭防火墙并取消开机自启动
-> **说明:**
+> **说明:**
>测试环境下通常会关闭防火墙以避免部分网络因素影响,视实际需求做配置。
1. 在root权限下停止防火墙。
- ```
- # systemctl stop firewalld
+ ```shell
+ systemctl stop firewalld
```
2. 在root权限下关闭防火墙。
- ```
- # systemctl disable firewalld
+ ```shell
+ systemctl disable firewalld
```
- > **说明:**
+ > **说明:**
>执行disable命令关闭防火墙的同时,也取消了开机自启动。
-#### 修改SELinux为disabled
+#### 修改SELINUX为disabled
-1. 在root权限下修改配置文件。
+在root权限下修改配置文件。
- ```
- # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
- ```
+```shell
+sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
+```
#### 创建组和用户
-> **说明:**
+> **说明:**
>服务器环境下,为了系统安全,通常会为进程分配单独的用户,以实现权限隔离。本章节创建的组和用户都是操作系统层面的,不是数据库层面的。
1. 在root权限下创建PostgreSQL用户(组)。
- ```
- # groupadd postgres
- ```
-
- ```
- # useradd -g postgres postgres
+ ```shell
+ groupadd postgres
+ useradd -g postgres postgres
```
2. 在root权限下设置postgres用户密码(重复输入密码)。
- ```
- # passwd postgres
+ ```shell
+ passwd postgres
```
#### 搭建数据盘
-> **说明:**
->
+> **说明:**
>- 测试极限性能时,建议单独挂载IO性能更优的NVME SSD存储介质创建PostgreSQL测试实例,避免磁盘IO对性能测试结果的影响,本文以单独挂载NVME SSD为例,参考步骤1\~步骤4。
>- 非性能测试时,在root权限下执行以下命令,创建数据目录即可。然后跳过本小节:
-> \# mkdir /data
+> mkdir /data
1. 在root权限下创建文件系统(以xfs为例,根据实际需求创建文件系统),若磁盘之前已做过文件系统,执行此命令会出现报错,可使用-f参数强制创建文件系统。
- ```
- # mkfs.xfs /dev/nvme0n1
+ ```shell
+ mkfs.xfs /dev/nvme0n1
```
2. 在root权限下创建数据目录。
- ```
- # mkdir /data
+ ```shell
+ mkdir /data
```
3. 在root权限下挂载磁盘。
- ```
- # mount -o noatime,nobarrier /dev/nvme0n1 /data
+ ```shell
+ mount -o noatime,nobarrier /dev/nvme0n1 /data
```
#### 数据目录授权
1. 在root权限下修改目录权限。
- ```
- # chown -R postgres:postgres /data/
+ ```shell
+ chown -R postgres:postgres /data/
```
### 安装、运行和卸载
#### 安装
-1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.html)。
+1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.md)。
2. 清除缓存。
- ```
+ ```shell
dnf clean all
```
3. 创建缓存。
- ```
+ ```shell
dnf makecache
```
4. 在root权限下安装PostgreSQL服务器。
- ```
- # dnf install postgresql-server
+ ```shell
+ dnf install postgresql-server
```
5. 查看安装后的rpm包。
- ```
+ ```shell
rpm -qa | grep postgresql
```
@@ -203,32 +228,32 @@ PostgreSQL的架构如[图1](#fig26022387391)所示,主要进程说明如[表1
##### 初始化数据库
-> **须知:**
+> **须知:**
>此步骤在postgres用户下操作。
1. 切换到已创建的PostgreSQL用户。
- ```
- # su - postgres
+ ```shell
+ su - postgres
```
2. 初始化数据库,其中命令中的/usr/bin是命令initdb所在的目录。
- ```
- /usr/bin/initdb -D /data/
+ ```shell
+ usr/bin/initdb -D /data/
```
##### 启动数据库
1. 启动PostgreSQL数据库。
- ```
+ ```shell
/usr/bin/pg_ctl -D /data/ -l /data/logfile start
```
2. 确认PostgreSQL数据库进程是否正常启动。
- ```
+ ```shell
ps -ef | grep postgres
```
@@ -240,26 +265,20 @@ PostgreSQL的架构如[图1](#fig26022387391)所示,主要进程说明如[表1
1. 登录数据库。
- ```
+ ```shell
/usr/bin/psql -U postgres
```
- ```
- [postgres@localhost ~]$ /usr/bin/psql -U postgres
- psql (13.3)
- Type "help" for help.
-
- postgres=#
- ```
+ 
- > **说明:**
+ > **说明:**
>初次登录数据库,无需密码。
##### 配置数据库帐号密码
1. 登录后,设置postgres密码。
- ```
+ ```shell
postgres=#alter user postgres with password '123456';
```
@@ -269,7 +288,7 @@ PostgreSQL的架构如[图1](#fig26022387391)所示,主要进程说明如[表1
1. 执行\\q退出数据库。
- ```
+ ```shell
postgres=#\q
```
@@ -277,7 +296,7 @@ PostgreSQL的架构如[图1](#fig26022387391)所示,主要进程说明如[表1
1. 停止PostgreSQL数据库。
- ```
+ ```shell
/usr/bin/pg_ctl -D /data/ -l /data/logfile stop
```
@@ -285,14 +304,14 @@ PostgreSQL的架构如[图1](#fig26022387391)所示,主要进程说明如[表1
1. 在postgres用户下停止数据库。
- ```
+ ```shell
/usr/bin/pg_ctl -D /data/ -l /data/logfile stop
```
2. 在root用户下执行**dnf remove postgresql-server**卸载PostgreSQL数据库。
- ```
- # dnf remove postgresql-server
+ ```shell
+ dnf remove postgresql-server
```
### 管理数据库角色
@@ -301,11 +320,11 @@ PostgreSQL的架构如[图1](#fig26022387391)所示,主要进程说明如[表1
可以使用CREATE ROLE语句或createuser来创建角色。createuser是对CREATE ROLE命令的封装,需要在shell界面执行,而不是在数据库界面。
-```
+```shell
CREATE ROLE rolename [ [ WITH ] option [ ... ] ];
```
-```
+```shell
createuser rolename
```
@@ -317,9 +336,9 @@ createuser rolename
- CREATEDB | NOCREATEDB:定义一个角色是否能创建数据库,若未指定,则默认为NOCREATEDB,即不能创建数据库。
- CREATEROLE | NOCREATEROLE:决定一个角色是否可以创建新角色,若未指定,则默认为NOCREATEROLE,即不能创建新角色。
- INHERIT | NOINHERIT:决定一个角色是否"继承"它所在组的角色的权限。一个带有 INHERIT 属性的角色可以自动使用已经赋与它直接或间接所在组的任何权限。若未指定,则默认为INHERIT。
- - LOGIN | NOLOGIN:决定一个角色是否可以登录,一个拥有LOGIN属性的角色可以认为是一个用户,无此属性的角色可以用于管理数据库权限,但是并不是用户。若未指定,则默认为NOLOGIN。但若创建角色是使用的是CREATE USER而不是CREATE ROLE,则默认是LOGIN属性。
+ - LOGIN | NOLOGIN:决定一个角色是否可以登录,一个拥有LOGIN属性的角色可以认为是一个用户,若无此属性的角色可以用于管理数据库权限,但是并不是用户,若未指定,则默认为NOLOGIN。但若创建角色是使用的是CREATE USER而不是CREATE ROLE,则默认是LOGIN属性。
- \[ ENCRYPTED | UNENCRYPTED \] PASSWORD 'password':设置角色的密码,密码只对那些拥有 LOGIN 属性的角色有意义。ENCRYPTED | UNENCRYPTED表示是否对密码进行加密,若未指定,则默认为ENCRYPTED,即加密。
- - VALID UNTIL 'timestamp':角色的密码失效的时间戳,若未指定,则表示密码永久有效。
+ - VALID UNTIL 'timestamp':角色的密码失效的时间戳,若为指定,则表示密码永久有效。
- IN ROLE rolename1:列出一个或多个现有的角色,新角色rolename将立即加入这些角色,成为rolename1的成员。
- ROLE rolename2:列出一个或多个现有的角色,它们将自动添加为新角色rolename的成员,即新角色为"组"。
@@ -327,33 +346,33 @@ createuser rolename
##### 示例
-\#创建一个可以登录的角色roleexample1。
+创建一个可以登录的角色roleexample1。
-```
+```shell
postgres=# CREATE ROLE roleexample1 LOGIN;
```
-\#创建一个密码为123456的角色roleexample2。
+创建一个密码为123456的角色roleexample2。
-```
+```shell
postgres=# CREATE ROLE roleexample2 WITH LOGIN PASSWORD '123456';
```
-\#创建角色名为roleexample3的角色。
+创建角色名为roleexample3的角色。
-```
-[postgres@localhost ~]$ createuser roleexample3
+```shell
+[postgres@localhost ~]# createuser roleexample3
```
#### 查看角色
可以使用SELECT语句或psql的元命令\\du查看角色。
-```
-SELECT rolname FROM pg_roles;
+```shell
+SELECT rolename FROM pg_roles;
```
-```
+```shell
\du
```
@@ -361,15 +380,15 @@ SELECT rolname FROM pg_roles;
##### 示例
-\#查看roleexample1角色。
+查看roleexample1角色。
-```
+```shell
postgres=# SELECT roleexample1 from pg_roles;
```
-\#查看现有角色。
+查看现有角色。
-```
+```shell
postgres=# \du
```
@@ -379,7 +398,7 @@ postgres=# \du
可以使用ALTER ROLE语句修改一个已经存在的角色名。
-```
+```shell
ALTER ROLE oldrolername RENAME TO newrolename;
```
@@ -390,9 +409,9 @@ ALTER ROLE oldrolername RENAME TO newrolename;
##### 修改用户示例
-\#将角色名roleexample1修改为roleexapme2。
+将角色名roleexample1修改为roleexapme2。
-```
+```shell
postgres=# ALTER ROLE roleexample1 RENAME TO roleexample2;
```
@@ -400,7 +419,7 @@ postgres=# ALTER ROLE roleexample1 RENAME TO roleexample2;
可以使用ALTER ROLE语句修改一个角色的登录密码。
-```
+```shell
ALTER ROLE rolename PASSWORD 'password'
```
@@ -411,9 +430,9 @@ ALTER ROLE rolename PASSWORD 'password'
##### 修改角色密码示例
-\#将roleexample1的密码修改为456789。
+将roleexample1的密码修改为456789。
-```
+```shell
postgres=# ALTER ROLE roleexample1 WITH PASSWORD '456789';
```
@@ -421,28 +440,28 @@ postgres=# ALTER ROLE roleexample1 WITH PASSWORD '456789';
可以使用DROP ROLE语句或dropuser来删除角色。dropuser是对DROP ROLE命令的封装,需要在shell界面执行,而不是在数据库界面。
-```
+```shell
DROP ROLE rolename;
```
-```
+```shell
dropuser rolename
```
-其中:rolename:角色名。
+其中:rolename为角色名。
##### 示例
-\#删除userexample1角色。
+删除userexample1角色。
-```
+```shell
postgres=# DROP ROLE userexample1;
```
-\#删除userexample2角色。
+删除userexample2角色。
-```
-[postgres@localhost ~]$ dropuser userexample2
+```shell
+[postgres@localhost ~]# dropuser userexample2
```
#### 角色授权
@@ -451,49 +470,49 @@ postgres=# DROP ROLE userexample1;
对角色授予表的操作权限:
-```
+```shell
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ] tablename [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
```
对角色授予序列的操作权限:
-```
+```shell
GRANT { { USAGE | SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] } ON SEQUENCE sequencename [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
```
对角色授予数据库的操作权限:
-```
+```shell
GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE databasename [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
```
对角色授予函数的操作权限:
-```
+```shell
GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
```
对角色授予过程语言的操作权限:
-```
+```shell
GRANT { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE langname [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
```
对角色授予模式的操作权限:
-```
+```shell
GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schemaname [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
```
对角色授予表空间的操作权限:
-```
+```shell
GRANT { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespacename [, ...] TO { rolename | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
```
将角色rolename1的成员关系赋予角色rolename2:
-```
+```shell
GRANT rolename1 [, ...] TO rolename2 [, ...] [ WITH ADMIN OPTION ]
```
@@ -517,15 +536,15 @@ GRANT rolename1 [, ...] TO rolename2 [, ...] [ WITH ADMIN OPTION ]
##### 示例
-\#对userexample授予数据库database1的CREATE权限。
+对userexample授予数据库database1的CREATE权限。
-```
+```shell
postgres=# GRANT CREATE ON DATABASE database1 TO userexample;
```
-\#对所有用户授予表table1的所有权限。
+对所有用户授予表table1的所有权限。
-```
+```shell
postgres=# GRANT ALL PRIVILEGES ON TABLE table1 TO PUBLIC;
```
@@ -535,49 +554,49 @@ postgres=# GRANT ALL PRIVILEGES ON TABLE table1 TO PUBLIC;
撤销角色对表的操作权限:
-```
+```shell
REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ] tablename [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...]
```
撤销角色对序列的操作权限:
-```
+```shell
REVOKE [ GRANT OPTION FOR ] { { USAGE | SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] } ON SEQUENCE sequencename [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ]
```
撤销角色对数据库的操作权限:
-```
+```shell
REVOKE [ GRANT OPTION FOR ] { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE databasename [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ]
```
撤销角色对函数的操作权限:
-```
+```shell
REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ]
```
撤销角色对过程语言的操作权限:
-```
+```shell
REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE langname [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ]
```
撤销角色对模式的操作权限:
-```
+```shell
REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schemaname [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ]
```
撤销角色对表空间的操作权限:
-```
+```shell
REVOKE [ GRANT OPTION FOR ] { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespacename [, ...] FROM { rolename | GROUP groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ]
```
删除rolename2的rolename1的成员关系:
-```
+```shell
REVOKE [ ADMIN OPTION FOR ] rolename1 [, ...] FROM rolename2 [, ...] [ CASCADE | RESTRICT ]
```
@@ -603,15 +622,15 @@ REVOKE [ ADMIN OPTION FOR ] rolename1 [, ...] FROM rolename2 [, ...] [ CASCADE |
##### 示例
-\#对userexample授予数据库database1的CREATE权限。
+对userexample授予数据库database1的CREATE权限。
-```
+```shell
postgres=# GRANT CREATE ON DATABASE database1 TO userexample;
```
-\#对所有用户授予表table1的所有权限。
+对所有用户授予表table1的所有权限。
-```
+```shell
postgres=# GRANT ALL PRIVILEGES ON TABLE table1 TO PUBLIC;
```
@@ -621,11 +640,11 @@ postgres=# GRANT ALL PRIVILEGES ON TABLE table1 TO PUBLIC;
可以使用CREATE DATABASE语句或createdb来创建数据库。createrdb是对CREATE DATABASE命令的封装,需要在shell界面执行,而不是在数据库界面。
-```
+```shell
CREATE DATABASE databasename;
```
-```
+```shell
createdb databasename
```
@@ -635,9 +654,9 @@ createdb databasename
##### 示例
-\#创建一个数据库database1。
+创建一个数据库database1。
-```
+```shell
postgres=# CREATE DATABASE database1;
```
@@ -645,7 +664,7 @@ postgres=# CREATE DATABASE database1;
可以使用\\c语句来选择数据库。
-```
+```shell
\c databasename;
```
@@ -653,9 +672,9 @@ postgres=# CREATE DATABASE database1;
##### 示例
-\#选择databaseexample数据库。
+选择databaseexample数据库。
-```
+```shell
postgres=# \c databaseexample;
```
@@ -663,15 +682,15 @@ postgres=# \c databaseexample;
可以使用\\l语句来查看数据库。
-```
+```shell
\l;
```
##### 示例
-\#查看所有数据库。
+查看所有数据库。
-```
+```shell
postgres=# \l;
```
@@ -682,11 +701,11 @@ postgres=# \l;
> **注意:**
>删除数据库要谨慎操作,一旦删除,数据库中的所有表和数据都会删除。
-```
+```shell
DROP DATABASE databasename;
```
-```
+```shell
dropdb databasename
```
@@ -698,9 +717,9 @@ DROP DATABASE只能由超级管理员或数据库拥有者执行。
##### 示例
-\#删除databaseexample数据库。
+删除databaseexample数据库。
-```
+```shell
postgres=# DROP DATABASE databaseexample;
```
@@ -708,7 +727,7 @@ postgres=# DROP DATABASE databaseexample;
可以使用pg\_dump命令备份数据库,将数据库转储到一个脚本文件或其他归档文件中。
-```
+```shell
pg_dump [option]... [databasename] > outfile
```
@@ -726,17 +745,17 @@ pg_dump [option]... [databasename] > outfile
##### 示例
-\#备份主机为192.168.202.144,端口为3306,postgres用户下的database1数据库到db1.sql中。
+备份主机为192.168.202.144,端口为3306,postgres用户下的database1数据库到db1.sql中。
-```
-[postgres@localhost ~]$ pg_dump -h 192.168.202.144 -p 3306 -U postgres -W database1 > db1.sql
+```shell
+[postgres@localhost ~]# pg_dump -h 192.168.202.144 -p 3306 -U postgres -W database1 > db1.sql
```
#### 恢复数据库
可以使用psql命令恢复数据库。
-```
+```shell
psql [option]... [databasename [username]] < infile
```
@@ -746,22 +765,22 @@ psql [option]... [databasename [username]] < infile
- username:用户名。
- infile:pg\_dump命令中的outfile参数。
- option:psql命令参数选项,多个参数之间可以使用空格分隔。常用的psql命令参数选项如下:
- - -f,\-\-file=filename:指输出到指定的文件。如果忽略,则使用标准输出。
- - -d,\-\-dbname=databasename:指定转储的数据库。
- - -h,\-\-host=hostname:指定主机名。
- - -p,\-\-port=portnumber:指定端口。
- - -U,\-\-username=username:指定连接的用户名。
- - -W,\-\-password:强制口令提示(自动)。
+ - -f,--file=filename:指输出到指定的文件。如果忽略,则使用标准输出。
+ - -d,--dbname=databasename:指定转储的数据库。
+ - -h,--host=hostname:指定主机名。
+ - -p,--port=portnumber:指定端口。
+ - -U,--username=username:指定连接的用户名。
+ - -W,--password:强制口令提示(自动)。
psql命令不会自动创建databasename数据库,所以在执行psql恢复数据库之前需要先创建databasename数据库。
##### 示例
-\#将db1.sql脚本文件导入到主机为192.168.202.144,端口为3306,postgres用户下newdb数据库中。
+将db1.sql脚本文件导入到主机为192.168.202.144,端口为3306,postgres用户下newdb数据库中。
-```
-[postgres@localhost ~]$ createdb newdb
-[postgres@localhost ~]$ psql -h 192.168.202.144 -p 3306 -U postgres -W -d newdb < db1.sql
+```shell
+[postgres@localhost ~]# createdb newdb
+[postgres@localhost ~]# psql -h 192.168.202.144 -p 3306 -U postgres -W -d newdb < db1.sql
```
## Mariadb服务器
@@ -795,74 +814,72 @@ MariaDB的架构如[图2](#fig13492418164520)所示。
### 配置环境
-> **说明:**
->以下环境配置仅为参考示例,具体配置视实际需求做配置。
->
+> **说明:**
+>以下环境配置仅为参考示例,具体配置视实际需求做配置
+
#### 关闭防火墙并取消开机自启动
-> **说明:**
+> **说明:**
>测试环境下通常会关闭防火墙以避免部分网络因素影响,视实际需求做配置。
1. 在root权限下停止防火墙。
- ```
- # systemctl stop firewalld
+ ```shell
+ systemctl stop firewalld
```
2. 在root权限下关闭防火墙。
- ```
- # systemctl disable firewalld
+ ```shell
+ systemctl disable firewalld
```
- > **说明:**
+ > **说明:**
>执行disable命令关闭防火墙的同时,也取消了开机自启动。
#### 修改SELINUX为disabled
1. 在root权限下修改配置文件。
- ```
- # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
+ ```shell
+ sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
```
#### 创建组和用户
-> **说明:**
+> **说明:**
>服务器环境下,为了系统安全,通常会为进程分配单独的用户,以实现权限隔离。本章节创建的组和用户都是操作系统层面的,不是数据库层面的。
1. 在root权限下创建MySQL用户(组)。
- ```
- # groupadd mysql
+ ```shell
+ groupadd mysql
```
- ```
- # useradd -g mysql mysql
+ ```shell
+ useradd -g mysql mysql
```
2. 在root权限下设置MySQL用户密码。
- ```
- # passwd mysql
+ ```shell
+ passwd mysql
```
重复输入密码(根据实际需求设置密码)。
#### 搭建数据盘
-> **说明:**
->
->- 进行性能测试时,数据目录使用单独硬盘,需要对硬盘进行格式化并挂载,参考方法一或者方法二
->- 非性能测试时,在root权限下执行以下命令,创建数据目录即可。然后跳过本小节:
-> \#mkdir /data
+> **说明:**
+>- 进行性能测试时,数据目录使用单独硬盘,需要对硬盘进行格式化并挂载,参考方法一或者方法二。
+>- 非性能测试时,在root权限下执行`mkdir /data`创建数据目录即可。然后跳过本小节。
##### 方法一:在root权限下使用fdisk进行磁盘管理
-1. 创建分区(以/dev/sdb为例,根据实际情况创建)。
+1. 创建分区(以/dev/sdb为例,根据实际情况创建)
- ```
- # fdisk /dev/sdb
+ ```shell
+ fdisk /dev/sdb
```
2. 输入n,按回车确认。
@@ -873,18 +890,18 @@ MariaDB的架构如[图2](#fig13492418164520)所示。
7. 输入w,按回车保存。
8. 创建文件系统(以xfs为例,根据实际需求创建文件系统)
- ```
- # mkfs.xfs /dev/sdb1
+ ```shell
+ mkfs.xfs /dev/sdb1
```
9. 挂载分区到“/data”以供操作系统使用。
- ```
- # mkdir /data
+ ```shell
+ mkdir /data
```
- ```
- # mount /dev/sdb1 /data
+ ```shell
+ mount /dev/sdb1 /data
```
10. 执行命令“vi /etc/fstab", 编辑“/etc/fstab”使重启后自动挂载数据盘。如下图中,添加最后一行内容。
@@ -895,45 +912,40 @@ MariaDB的架构如[图2](#fig13492418164520)所示。
##### 方法二:在root权限下使用LVM进行磁盘管理
-> **说明:**
+> **说明:**
>此步骤需要安装镜像中的lvm2相关包,步骤如下:
->
->1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.html)。如果已经执行,则可跳过此步。
->2. 在root权限下执行命令安装lvm2。
-> **\# yum install lvm2**
+>1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.md)。如果已经执行,则可跳过此步。
+>2. 在root权限下执行`yum install lvm2`命令安装lvm2。
1. 创建物理卷(sdb为硬盘名称,具体名字以实际为准)。
- ```
- # pvcreate /dev/sdb
+ ```shell
+ pvcreate /dev/sdb
```
2. 创建物理卷组(其中datavg为创建的卷组名称,具体名字以实际规划为准)。
- ```
- # vgcreate datavg /dev/sdb
+ ```shell
+ vgcreate datavg /dev/sdb
```
-3. 创建逻辑卷(其中600G为规划的逻辑卷大小,具体大小以实际情况为准;datalv为创建的逻辑卷的名字,具体名称以实际规划为准。\)。
+3. 创建逻辑卷(其中600G为规划的逻辑卷大小,具体大小以实际情况为准;datalv为创建的逻辑卷的名字,具体名称以实际规划为准。)。
- ```
- # lvcreate -L 600G -n datalv datavg
+ ```shell
+ lvcreate -L 600G -n datalv datavg
```
4. 创建文件系统。
- ```
- # mkfs.xfs /dev/datavg/datalv
+ ```shell
+ mkfs.xfs /dev/datavg/datalv
```
5. 创建数据目录并挂载。
- ```
- # mkdir /data
- ```
-
- ```
- # mount /dev/datavg/datalv /data
+ ```shell
+ mkdir /data
+ mount /dev/datavg/datalv /data
```
6. 执行命令**vi /etc/fstab**,编辑“/etc/fstab”使重启后自动挂载数据盘。如下图中,添加最后一行内容。
@@ -946,39 +958,39 @@ MariaDB的架构如[图2](#fig13492418164520)所示。
1. 在已创建的数据目录 **/data** 基础上,使用root权限继续创建进程所需的相关目录并授权MySQL用户(组)。
- ```
- # mkdir -p /data/mariadb
- # cd /data/mariadb
- # mkdir data tmp run log
- # chown -R mysql:mysql /data
+ ```shell
+ mkdir -p /data/mariadb
+ cd /data/mariadb
+ mkdir data tmp run log
+ chown -R mysql:mysql /data
```
### 安装、运行和卸载
#### 安装
-1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.html)。
+1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.md)。
2. 清除缓存。
- ```
+ ```shell
dnf clean all
```
3. 创建缓存。
- ```
+ ```shell
dnf makecache
```
4. 在root权限下安装mariadb服务器。
- ```
- # dnf install mariadb-server
+ ```shell
+ dnf install mariadb-server
```
5. 查看安装后的rpm包。
- ```
+ ```shell
rpm -qa | grep mariadb
```
@@ -986,42 +998,42 @@ MariaDB的架构如[图2](#fig13492418164520)所示。
1. 在root权限下开启mariadb服务器。
- ```
- # systemctl start mariadb
+ ```shell
+ systemctl start mariadb
```
2. 在root权限下初始化数据库。
- ```
- # /usr/bin/mysql_secure_installation
+ ```shell
+ /usr/bin/mysql_secure_installation
```
命令执行过程中需要输入数据库的root设置的密码,若没有密码则直接按“Enter”。然后根据提示及实际情况进行设置。
3. 登录数据库。
- ```
+ ```shell
mysql -u root -p
```
命令执行后提示输入密码。密码为[2](#li197143190587)中设置的密码。
- > **说明:**
+ > **说明:**
>执行 **\\q** 或者 **exit** 可退出数据库。
#### 卸载
1. 在root权限下关闭数据库进程。
- ```
- $ ps -ef | grep mysql
- # kill -9 进程ID
+ ```shell
+ ps -ef | grep mysql
+ kill -9 进程ID
```
2. 在root权限下执行**dnf remove mariadb-server**命令卸载mariadb。
- ```
- # dnf remove mariadb-server
+ ```shell
+ dnf remove mariadb-server
```
### 管理数据库用户
@@ -1030,7 +1042,7 @@ MariaDB的架构如[图2](#fig13492418164520)所示。
可以使用CREATE USER语句来创建一个或多个用户,并设置相应的口令。
-```
+```shell
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
```
@@ -1048,15 +1060,15 @@ CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
##### 示例
-\#创建密码为123456,用户名为userexample1的本地用户。
+创建密码为123456,用户名为userexample1的本地用户。
-```
+```shell
> CREATE USER 'userexample1'@'localhost' IDENTIFIED BY '123456';
```
-\#创建密码为123456,用户名为userexample2,主机名为192.168.1.100的用户。
+创建密码为123456,用户名为userexample2,主机名为192.168.1.100的用户。
-```
+```shell
> CREATE USER 'userexample2'@'192.168.1.100' IDENTIFIED BY '123456';
```
@@ -1066,17 +1078,17 @@ CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
查看特定用户:
-```
+```shell
SHOW GRANTS [FOR 'username'@'hostname'];
```
-```
+```shell
SELECT USER,HOST,PASSWORD FROM mysql.user WHERE USER='username';
```
查看所有用户:
-```
+```shell
SELECT USER,HOST,PASSWORD FROM mysql.user;
```
@@ -1087,15 +1099,15 @@ SELECT USER,HOST,PASSWORD FROM mysql.user;
##### 示例
-\#查看userexample1用户。
+查看userexample1用户。
-```
+```shell
> SHOW GRANTS FOR 'userexample1'@'localhost';
```
-\#查看mysql数据库中所有用户。
+查看mysql数据库中所有用户。
-```
+```shell
> SELECT USER,HOST,PASSWORD FROM mysql.user;
```
@@ -1105,7 +1117,7 @@ SELECT USER,HOST,PASSWORD FROM mysql.user;
可以使用RENAME USER语句修改一个或多个已经存在的用户名。
-```
+```shell
RENAME USER 'oldusername'@'hostname' TO 'newusername'@'hostname';
```
@@ -1121,9 +1133,9 @@ RENAME USER语句用于对原有的帐号进行重命名。若系统中旧帐号
##### 修改用户示例
-\#将用户名userexample1修改为userexapme2,主机名为locahost。
+将用户名userexample1修改为userexapme2,主机名为locahost。
-```
+```shell
> RENAME USER 'userexample1'@'localhost' TO 'userexample2'@'localhost';
```
@@ -1131,7 +1143,7 @@ RENAME USER语句用于对原有的帐号进行重命名。若系统中旧帐号
可以使用SET PASSWORD语句修改一个用户的登录密码。
-```
+```shell
SET PASSWORD FOR 'username'@'hostname' = PASSWORD('newpassword');
```
@@ -1151,9 +1163,9 @@ FOR字句中必须以'username'@'hostname'的格式给定,username为帐户的
##### 修改用户密码示例
-\#将用户名为userexample的密码修改为0123456,主机名为locahost。
+将用户名为userexample的密码修改为0123456,主机名为locahost。
-```
+```shell
> SET PASSWORD FOR 'userexample'@'localhost' = PASSWORD('0123456') ;
```
@@ -1161,7 +1173,7 @@ FOR字句中必须以'username'@'hostname'的格式给定,username为帐户的
可以使用DROP USER语句来删除一个或多个用户帐号以及相关的权限。
-```
+```shell
DROP USER 'username1'@'hostname1' [,'username2'@'hostname2']…;
```
@@ -1176,9 +1188,9 @@ DROP USER语句可用于删除一个或多个数据库帐号,并删除其原
##### 示例
-\#删除用户名为userexample的本地用户。
+删除用户名为userexample的本地用户。
-```
+```shell
> DROP USER 'userexample'@'localhost';
```
@@ -1186,7 +1198,7 @@ DROP USER语句可用于删除一个或多个数据库帐号,并删除其原
可以使用GRANT语句来对新建用户的授权。
-```
+```shell
GRANT privileges ON databasename.tablename TO 'username'@'hostname';
```
@@ -1208,9 +1220,9 @@ GRANT privileges ON databasename.tablename TO 'username'@'hostname';
##### 示例
-\#对本地用户userexample授予SELECT和INSERT权限。
+对本地用户userexample授予SELECT和INSERT权限。
-```
+```shell
> GRANT SELECT,INSERT ON *.* TO 'userexample'@'localhost';
```
@@ -1218,7 +1230,7 @@ GRANT privileges ON databasename.tablename TO 'username'@'hostname';
可以使用REVOKE语句来删除一个用户的权限,但此用户不会被删除。
-```
+```shell
REVOKE privilege ON databasename.tablename FROM 'username'@'hostname';
```
@@ -1228,9 +1240,9 @@ REVOKE privilege ON databasename.tablename FROM 'username'@'hostname';
##### 示例
-\#删除本地用户userexample的INSERT权限。
+删除本地用户userexample的INSERT权限。
-```
+```shell
> REVOKE INSERT ON *.* FROM 'userexample'@'localhost';
```
@@ -1240,7 +1252,7 @@ REVOKE privilege ON databasename.tablename FROM 'username'@'hostname';
可以使用CREATE DATABASE语句来创建数据库。
-```
+```shell
CREATE DATABASE databasename;
```
@@ -1248,9 +1260,9 @@ CREATE DATABASE databasename;
##### 示例
-\#创建数据库名为databaseexample的数据库。
+创建数据库名为databaseexample的数据库。
-```
+```shell
> CREATE DATABASE databaseexample;
```
@@ -1258,15 +1270,15 @@ CREATE DATABASE databasename;
可以使用SHOW DATABASES语句来查看数据库。
-```
+```shell
SHOW DATABASES;
```
##### 示例
-\#查看所有数据库。
+查看所有数据库。
-```
+```shell
> SHOW DATABASES;
```
@@ -1274,7 +1286,7 @@ SHOW DATABASES;
一般创建表,查询表等操作首先需要选择一个目标数据库。可以使用USE语句来选择数据库。
-```
+```shell
USE databasename;
```
@@ -1282,9 +1294,9 @@ USE databasename;
##### 示例
-\#选择databaseexample数据库。
+选择databaseexample数据库。
-```
+```shell
> USE databaseexample;
```
@@ -1295,7 +1307,7 @@ USE databasename;
> **注意:**
>删除数据库要谨慎操作,一旦删除,数据库中的所有表和数据都会删除。
-```
+```shell
DROP DATABASE databasename;
```
@@ -1309,9 +1321,9 @@ DROP SCHEMA是DROP DATABASE的同义词。
##### 示例
-\#删除databaseexample数据库。
+删除databaseexample数据库。
-```
+```shell
> DROP DATABASE databaseexample;
```
@@ -1321,19 +1333,19 @@ DROP SCHEMA是DROP DATABASE的同义词。
备份一个或多个表:
-```
+```shell
mysqldump [options] databasename [tablename ...] > outfile
```
备份一个或多个库:
-```
+```shell
mysqldump [options] -databases databasename ... > outfile
```
备份所有库:
-```
+```shell
mysqldump [options] -all-databases > outputfile
```
@@ -1353,34 +1365,34 @@ mysqldump [options] -all-databases > outputfile
##### 示例
-\#备份主机为192.168.202.144,端口为3306,root用户下的所有数据库到alldb.sql中。
+备份主机为192.168.202.144,端口为3306,root用户下的所有数据库到alldb.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 --all-databases > alldb.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 --all-databases > alldb.sql
```
-\#备份主机为192.168.202.144,端口为3306,root用户下的db1数据库到db1.sql中。
+备份主机为192.168.202.144,端口为3306,root用户下的db1数据库到db1.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 --databases db1 > db1.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 --databases db1 > db1.sql
```
-\#备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的tb1表到db1tb1.sql中。
+备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的tb1表到db1tb1.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 db1 tb1 > db1tb1.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 db1 tb1 > db1tb1.sql
```
-\#只备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的表结构到db1.sql中。
+只备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的表结构到db1.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 -d db1 > db1.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 -d db1 > db1.sql
```
-\#只备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的数据到db1.sql中。
+只备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的数据到db1.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 -t db1 > db1.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 -t db1 > db1.sql
```
#### 恢复数据库
@@ -1389,7 +1401,7 @@ mysqldump [options] -all-databases > outputfile
恢复一个或多个表:
-```
+```shell
mysql -h hostname -P portnumber -u username -ppassword databasename < infile
```
@@ -1404,9 +1416,9 @@ mysql -h hostname -P portnumber -u username -ppassword databasename < infile
##### 示例
-\#恢复数据库。
+恢复数据库。
-```
+```shell
# mysql -h 192.168.202.144 -P 3306 -uroot -p123456 -t db1 < db1.sql
```
@@ -1423,8 +1435,8 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
### 配置环境
> **说明:**
->以下环境配置仅为参考示例,具体配置视实际需求做配置。
->
+>以下环境配置仅为参考示例,具体配置视实际需求做配置
+
#### 关闭防火墙并取消开机自启动
> **说明:**
@@ -1432,64 +1444,62 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
1. 在root权限下停止防火墙。
- ```
- # systemctl stop firewalld
+ ```shell
+ systemctl stop firewalld
```
2. 在root权限下关闭防火墙。
- ```
- # systemctl disable firewalld
+ ```shell
+ systemctl disable firewalld
```
- > **说明:**
+ > **说明:**
>执行disable命令关闭防火墙的同时,也取消了开机自启动。
#### 修改SELINUX为disabled
1. 在root权限下修改配置文件。
- ```
- # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
+ ```shell
+ sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
```
#### 创建组和用户
-> **说明:**
+> **说明:**
>服务器环境下,为了系统安全,通常会为进程分配单独的用户,以实现权限隔离。本章节创建的组和用户都是操作系统层面的,不是数据库层面的。
1. 在root权限下创建MySQL用户(组)。
- ```
- # groupadd mysql
+ ```shell
+ groupadd mysql
```
- ```
- # useradd -g mysql mysql
+ ```shell
+ useradd -g mysql mysql
```
2. 在root权限下设置MySQL用户密码。
- ```
- # passwd mysql
+ ```shell
+ passwd mysql
```
重复输入密码(根据实际需求设置密码)。
#### 搭建数据盘
-> **说明:**
->
->- 进行性能测试时,数据目录使用单独硬盘,需要对硬盘进行格式化并挂载,参考方法一或者方法二
->- 非性能测试时,在root权限下执行以下命令,创建数据目录即可。然后跳过本小节:
-> \# mkdir /data
+> **说明:**
+>- 进行性能测试时,数据目录使用单独硬盘,需要对硬盘进行格式化并挂载,参考方法一或者方法二。
+>- 非性能测试时,在root权限下执行`mkdir /data`创建数据目录即可。然后跳过本小节:
##### 方法一:在root权限下使用fdisk进行磁盘管理
-1. 创建分区(以/dev/sdb为例,根据实际情况创建)。
+1. 创建分区(以/dev/sdb为例,根据实际情况创建)
- ```
- # fdisk /dev/sdb
+ ```shell
+ fdisk /dev/sdb
```
2. 输入n,按回车确认。
@@ -1498,20 +1508,20 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
5. 采用默认配置,按回车确认。
6. 采用默认配置,按回车确认。
7. 输入w,按回车保存。
-8. 创建文件系统(以xfs为例,根据实际需求创建文件系统)。
+8. 创建文件系统(以xfs为例,根据实际需求创建文件系统)
- ```
- # mkfs.xfs /dev/sdb1
+ ```shell
+ mkfs.xfs /dev/sdb1
```
9. 挂载分区到“/data”以供操作系统使用。
- ```
- # mkdir /data
+ ```shell
+ mkdir /data
```
- ```
- # mount /dev/sdb1 /data
+ ```shell
+ mount /dev/sdb1 /data
```
10. 执行命令“vi /etc/fstab", 编辑“/etc/fstab”使重启后自动挂载数据盘。如下图中,添加最后一行内容。
@@ -1522,45 +1532,43 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
##### 方法二:在root权限下使用LVM进行磁盘管理
-> **说明:**
+> **说明:**
>此步骤需要安装镜像中的lvm2相关包,步骤如下:
->
->1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.html)。如果已经执行,则可跳过此步。
->2. 执行命令安装lvm2。
-> **\#yum install lvm2**
+>1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.md)。如果已经执行,则可跳过此步。
+>2. 执行`yum install lvm2`安装lvm2。
1. 创建物理卷(sdb为硬盘名称,具体名字以实际为准)。
- ```
- #pvcreate /dev/sdb
+ ```shell
+ pvcreate /dev/sdb
```
2. 创建物理卷组(其中datavg为创建的卷组名称,具体名字以实际规划为准)。
- ```
- #vgcreate datavg /dev/sdb
+ ```shell
+ vgcreate datavg /dev/sdb
```
-3. 创建逻辑卷(其中600G为规划的逻辑卷大小,具体大小以实际情况为准;datalv为创建的逻辑卷的名字,具体名称以实际规划为准。\)。
+3. 创建逻辑卷(其中600G为规划的逻辑卷大小,具体大小以实际情况为准;datalv为创建的逻辑卷的名字,具体名称以实际规划为准。)。
- ```
- #lvcreate -L 600G -n datalv datavg
+ ```shell
+ lvcreate -L 600G -n datalv datavg
```
4. 创建文件系统。
- ```
- #mkfs.xfs /dev/datavg/datalv
+ ```shell
+ mkfs.xfs /dev/datavg/datalv
```
5. 创建数据目录并挂载。
- ```
- #mkdir /data
+ ```shell
+ mkdir /data
```
- ```
- #mount /dev/datavg/datalv /data
+ ```shell
+ mount /dev/datavg/datalv /data
```
6. 执行命令**vi /etc/fstab**,编辑“/etc/fstab”使重启后自动挂载数据盘。如下图中,添加最后一行内容。
@@ -1573,39 +1581,39 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
1. 在已创建的数据目录 **/data** 基础上,使用root权限继续创建进程所需的相关目录并授权MySQL用户(组)。
- ```
- # mkdir -p /data/mysql
- # cd /data/mysql
- # mkdir data tmp run log
- # chown -R mysql:mysql /data
+ ```shell
+ mkdir -p /data/mysql
+ cd /data/mysql
+ mkdir data tmp run log
+ chown -R mysql:mysql /data
```
### 安装、运行和卸载
#### 安装
-1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.html)章节。
+1. 配置本地yum源,详细信息请参考[搭建repo服务器](./搭建repo服务器.md)章节。
2. 清除缓存。
- ```
+ ```shell
dnf clean all
```
3. 创建缓存。
- ```
+ ```shell
dnf makecache
```
4. 在root权限下安装MySQL服务器。
- ```
- # dnf install mysql-server
+ ```shell
+ dnf install mysql-server
```
5. 查看安装后的rpm包。
- ```
+ ```shell
rpm -qa | grep mysql-server
```
@@ -1614,13 +1622,13 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
1. 修改配置文件。
1. 在root权限下创建my.cnf文件,其中文件路径(包括软件安装路径basedir、数据路径datadir等)根据实际情况修改。
- ```
- # vi /etc/my.cnf
+ ```shell
+ vi /etc/my.cnf
```
编辑my.cnf内容如下:
- ```
+ ```text
[mysqld_safe]
log-error=/data/mysql/log/mysql.log
pid-file=/data/mysql/run/mysqld.pid
@@ -1642,7 +1650,7 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
2. 确保my.cnf配置文件修改正确。
- ```
+ ```shell
cat /etc/my.cnf
```
@@ -1651,17 +1659,17 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
> **注意:**
>其中basedir为软件安装路径,请根据实际情况修改。
- 3. 在root权限下修改/etc/my.cnf文件的组和用户为mysql:mysql。
+ 3. 在root权限下修改/etc/my.cnf文件的组和用户为mysql:mysql
- ```
- # chown mysql:mysql /etc/my.cnf
+ ```shell
+ chown mysql:mysql /etc/my.cnf
```
2. 配置环境变量。
1. 安装完成后,在root权限下将MySQL二进制文件路径到PATH。
- ```
- # echo export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile
+ ```shell
+ echo export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile
```
> **注意:**
@@ -1669,23 +1677,23 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
2. 在root权限下使环境变量配置生效。
- ```
- # source /etc/profile
+ ```shell
+ source /etc/profile
```
3. 在root权限下初始化数据库。
- > **说明:**
- >本步骤倒数第2行中有初始密码,请注意保存,登录数据库时需要使用。
+ > **说明:**
+ >本步骤倒数第2行中有初始密码,请注意保存,登录数据库时需要使用。
- ```
+ ```shell
# mysqld --defaults-file=/etc/my.cnf --initialize
2020-03-18T03:27:13.702385Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.17) initializing of server in progress as process 34014
2020-03-18T03:27:24.112453Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iNat=)#V2tZu
2020-03-18T03:27:28.576003Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.17) initializing of server has completed
```
- 查看打印信息,打印信息中包括“initializing of server has completed”表示初始化数据库完成,且打印信息中“A temporary password is generated for root@localhost: iNat=\)\#V2tZu”的“iNat=\)\#V2tZu”为初始密码。
+ 查看打印信息,打印信息中包括“initializing of server has completed”表示初始化数据库完成,且打印信息中“A temporary password is generated for root@localhost: iNat=\)V2tZu”的“iNat=\)V2tZu”为初始密码。
4. 启动数据库。
@@ -1694,33 +1702,33 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
1. 在root权限下修改文件权限。
- ```
- # chmod 777 /usr/local/mysql/support-files/mysql.server
+ ```shell
+ chmod 777 /usr/local/mysql/support-files/mysql.server
+ chown mysql:mysql /var/log/mysql/*
```
2. 在root权限下启动MySQL。
- ```
- # cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
- # chkconfig mysql on
+ ```shell
+ cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
+ chkconfig mysql on
```
以mysql用户启动数据库。
- ```
- # su - mysql
- $ service mysql start
+ ```shell
+ su - mysql
+ service mysql start
```
5. 登录数据库。
- > **说明:**
- >
+ > **说明:**
>- 提示输入密码时,请输入[3](#li15634560582)产生的初始密码。
>- 如果采用官网RPM安装方式,则mysql文件在/usr/bin目录下。登录数据库的命令根据实际情况修改。
- ```
- /usr/local/mysql/bin/mysql -uroot -p -S /data/mysql/run/mysql.sock
+ ```shell
+ # /usr/local/mysql/bin/mysql -uroot -p -S /data/mysql/run/mysql.sock
```

@@ -1728,19 +1736,19 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
6. 配置数据库帐号密码。
1. 登录数据库以后,修改通过root用户登录数据库的密码。
- ```
+ ```shell
mysql> alter user 'root'@'localhost' identified by "123456";
```
2. 创建全域root用户(允许root从其他服务器访问)。
- ```
+ ```shell
mysql> create user 'root'@'%' identified by '123456';
```
3. 进行授权。
- ```
+ ```shell
mysql> grant all privileges on *.* to 'root'@'%';
mysql> flush privileges;
```
@@ -1751,7 +1759,7 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
执行 **\\q** 或者 **exit** 退出数据库。
- ```
+ ```shell
mysql> exit
```
@@ -1761,15 +1769,15 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
1. 在root权限下关闭数据库进程。
- ```
- $ ps -ef | grep mysql
- # kill -9 进程ID
+ ```shell
+ ps -ef | grep mysql
+ kill -9 进程ID
```
2. 在root权限下执行**dnf remove mysql**命令卸载MySQL。
- ```
- # dnf remove mysql
+ ```shell
+ dnf remove mysql
```
### 管理数据库用户
@@ -1778,7 +1786,7 @@ MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
可以使用CREATE USER语句来创建一个或多个用户,并设置相应的口令。
-```
+```shell
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
```
@@ -1796,15 +1804,15 @@ CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
##### 示例
-\#创建密码为123456,用户名为userexample1的本地用户。
+创建密码为123456,用户名为userexample1的本地用户。
-```
+```shell
> CREATE USER 'userexample1'@'localhost' IDENTIFIED BY '123456';
```
-\#创建密码为123456,用户名为userexample2,主机名为192.168.1.100的用户。
+创建密码为123456,用户名为userexample2,主机名为192.168.1.100的用户。
-```
+```shell
> CREATE USER 'userexample2'@'192.168.1.100' IDENTIFIED BY '123456';
```
@@ -1814,17 +1822,17 @@ CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
查看特定用户:
-```
+```shell
SHOW GRANTS [FOR 'username'@'hostname'];
```
-```
+```shell
SELECT USER,HOST,PASSWORD FROM mysql.user WHERE USER='username';
```
查看所有用户:
-```
+```shell
SELECT USER,HOST FROM mysql.user;
```
@@ -1835,15 +1843,15 @@ SELECT USER,HOST FROM mysql.user;
##### 示例
-\#查看userexample1用户。
+查看userexample1用户。
-```
+```shell
> SHOW GRANTS FOR 'userexample1'@'localhost';
```
-\#查看mysql数据库中所有用户。
+查看mysql数据库中所有用户。
-```
+```shell
> SELECT USER,HOST FROM mysql.user;
```
@@ -1853,7 +1861,7 @@ SELECT USER,HOST FROM mysql.user;
可以使用RENAME USER语句修改一个或多个已经存在的用户名。
-```
+```shell
RENAME USER 'oldusername'@'hostname' TO 'newusername'@'hostname';
```
@@ -1869,9 +1877,9 @@ RENAME USER语句用于对原有的帐号进行重命名。若系统中旧帐号
##### 修改用户示例
-\#将用户名userexample1修改为userexapme2,主机名为locahost。
+将用户名userexample1修改为userexapme2,主机名为locahost。
-```
+```shell
> RENAME USER 'userexample1'@'localhost' TO 'userexample2'@'localhost';
```
@@ -1879,7 +1887,7 @@ RENAME USER语句用于对原有的帐号进行重命名。若系统中旧帐号
可以使用SET PASSWORD语句修改一个用户的登录密码。
-```
+```shell
SET PASSWORD FOR 'username'@'hostname' = 'newpassword';
```
@@ -1896,9 +1904,9 @@ FOR字句中必须以'username'@'hostname'的格式给定,username为帐户的
##### 修改用户密码示例
-\#将用户名为userexample的密码修改为0123456,主机名为locahost。
+将用户名为userexample的密码修改为0123456,主机名为locahost。
-```
+```shell
> SET PASSWORD FOR 'userexample'@'localhost' = '0123456';
```
@@ -1906,7 +1914,7 @@ FOR字句中必须以'username'@'hostname'的格式给定,username为帐户的
可以使用DROP USER语句来删除一个或多个用户帐号以及相关的权限。
-```
+```shell
DROP USER 'username1'@'hostname1' [,'username2'@'hostname2']…;
```
@@ -1921,9 +1929,9 @@ DROP USER语句可用于删除一个或多个数据库帐号,并删除其原
##### 示例
-\#删除用户名为userexample的本地用户。
+删除用户名为userexample的本地用户。
-```
+```shell
> DROP USER 'userexample'@'localhost';
```
@@ -1931,7 +1939,7 @@ DROP USER语句可用于删除一个或多个数据库帐号,并删除其原
可以使用GRANT语句来对新建用户的授权。
-```
+```shell
GRANT privileges ON databasename.tablename TO 'username'@'hostname';
```
@@ -1953,9 +1961,9 @@ GRANT privileges ON databasename.tablename TO 'username'@'hostname';
##### 示例
-\#对本地用户userexample授予SELECT和INSERT权限。
+对本地用户userexample授予SELECT和INSERT权限。
-```
+```shell
> GRANT SELECT,INSERT ON *.* TO 'userexample'@'localhost';
```
@@ -1963,7 +1971,7 @@ GRANT privileges ON databasename.tablename TO 'username'@'hostname';
可以使用REVOKE语句来删除一个用户的权限,但此用户不会被删除。
-```
+```shell
REVOKE privilege ON databasename.tablename FROM 'username'@'hostname';
```
@@ -1973,9 +1981,9 @@ REVOKE privilege ON databasename.tablename FROM 'username'@'hostname';
##### 示例
-\#删除本地用户userexample的INSERT权限。
+删除本地用户userexample的INSERT权限。
-```
+```shell
> REVOKE INSERT ON *.* FROM 'userexample'@'localhost';
```
@@ -1985,7 +1993,7 @@ REVOKE privilege ON databasename.tablename FROM 'username'@'hostname';
可以使用CREATE DATABASE语句来创建数据库。
-```
+```shell
CREATE DATABASE databasename;
```
@@ -1993,9 +2001,9 @@ CREATE DATABASE databasename;
##### 示例
-\#创建数据库名为databaseexample的数据库。
+创建数据库名为databaseexample的数据库。
-```
+```shell
> CREATE DATABASE databaseexample;
```
@@ -2003,15 +2011,15 @@ CREATE DATABASE databasename;
可以使用SHOW DATABASES语句来查看数据库。
-```
+```shell
SHOW DATABASES;
```
##### 示例
-\#查看所有数据库。
+查看所有数据库。
-```
+```shell
> SHOW DATABASES;
```
@@ -2019,7 +2027,7 @@ SHOW DATABASES;
一般创建表,查询表等操作首先需要选择一个目标数据库。可以使用USE语句来选择数据库。
-```
+```shell
USE databasename;
```
@@ -2027,9 +2035,9 @@ USE databasename;
##### 示例
-\#选择databaseexample数据库。
+选择databaseexample数据库。
-```
+```shell
> USE databaseexample;
```
@@ -2040,7 +2048,7 @@ USE databasename;
> **注意:**
>删除数据库要谨慎操作,一旦删除,数据库中的所有表和数据都会删除。
-```
+```shell
DROP DATABASE databasename;
```
@@ -2054,9 +2062,9 @@ DROP SCHEMA是DROP DATABASE的同义词。
##### 示例
-\#删除databaseexample数据库。
+删除databaseexample数据库。
-```
+```shell
> DROP DATABASE databaseexample;
```
@@ -2066,19 +2074,19 @@ DROP SCHEMA是DROP DATABASE的同义词。
备份一个或多个表:
-```
+```shell
mysqldump [options] databasename [tablename ...] > outfile
```
备份一个或多个库:
-```
+```shell
mysqldump [options] -databases databasename ... > outfile
```
备份所有库:
-```
+```shell
mysqldump [options] -all-databases > outputfile
```
@@ -2098,34 +2106,34 @@ mysqldump [options] -all-databases > outputfile
##### 示例
-\#备份主机为192.168.202.144,端口为3306,root用户下的所有数据库到alldb.sql中。
+备份主机为192.168.202.144,端口为3306,root用户下的所有数据库到alldb.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 --all-databases > alldb.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 --all-databases > alldb.sql
```
-\#备份主机为192.168.202.144,端口为3306,root用户下的db1数据库到db1.sql中。
+备份主机为192.168.202.144,端口为3306,root用户下的db1数据库到db1.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 --databases db1 > db1.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 --databases db1 > db1.sql
```
-\#备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的tb1表到db1tb1.sql中。
+备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的tb1表到db1tb1.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 db1 tb1 > db1tb1.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 db1 tb1 > db1tb1.sql
```
-\#只备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的表结构到db1.sql中。
+只备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的表结构到db1.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 -d db1 > db1.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 -d db1 > db1.sql
```
-\#只备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的数据到db1.sql中。
+只备份主机为192.168.202.144,端口为3306,root用户下的db1数据库的数据到db1.sql中。
-```
-# mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 -t db1 > db1.sql
+```shell
+mysqldump -h 192.168.202.144 -P 3306 -uroot -p123456 -t db1 > db1.sql
```
#### 恢复数据库
@@ -2134,7 +2142,7 @@ mysqldump [options] -all-databases > outputfile
恢复一个或多个表:
-```
+```shell
mysql -h hostname -P portnumber -u username -ppassword databasename < infile
```
@@ -2149,8 +2157,530 @@ mysql -h hostname -P portnumber -u username -ppassword databasename < infile
##### 示例
-\#恢复数据库。
+恢复数据库。
-```
+```shell
# mysql -h 192.168.202.144 -P 3306 -uroot -p123456 -t db1 < db1.sql
```
+
+## openGauss服务器
+
+### 软件介绍
+
+openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。
+
+### 安装
+
+安装指南请参见[《openGauss rpm安装》](https://docs.opengauss.org/zh/docs/latest/docs/InstallationGuide/RPM%E5%AE%89%E8%A3%85.html)。
+
+### 管理数据库角色
+
+#### 创建角色
+
+可以使用CREATE ROLE语句来创建角色,在数据库界面执行。
+
+```shell
+CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE };
+```
+
+其中:
+
+- role_name:角色名。
+- password:登录密码。
+- option为参数选项,常用的有:
+ - SYSADMIN | NOSYSADMIN:决定一个新角色是否为"系统管理员",具有SYSADMIN属性的角色拥有系统最高权限。缺省为NOSYSADMIN。
+ - CREATEDB | NOCREATEDB:定义一个角色是否能创建数据库,若未指定,则默认为NOCREATEDB,即不能创建数据库。
+ - CREATEROLE | NOCREATEROLE:决定一个角色是否可以创建新角色,若未指定,则默认为NOCREATEROLE,即不能创建新角色。
+ - INHERIT | NOINHERIT:这些子句决定一个角色是否“继承”它所在组的角色的权限。不推荐使用。
+ - LOGIN | NOLOGIN:具有LOGIN属性的角色才可以登录数据库。一个拥有LOGIN属性的角色可以认为是一个用户。
+ - ENCRYPTED | UNENCRYPTED:控制密码存储在系统表里的口令是否加密。按照产品安全要求,密码必须加密存储,所以,UNENCRYPTED在openGauss中禁止使用。因为系统无法对指定的加密口令字符串进行解密,所以如果目前的口令字符串已经是用SHA256加密的格式,则会继续照此存放,而不管是否声明了ENCRYPTED或UNENCRYPTED。这样就允许在dump/restore的时候重新加载加密的口令。
+ - VALID UNTIL:设置角色失效的时间戳。如果省略了该子句,角色无有效结束时间限制。
+ - IN ROLE:新角色立即拥有IN ROLE子句中列出的一个或多个现有角色拥有的权限。不推荐使用。
+ - ROLE:ROLE子句列出一个或多个现有的角色,它们将自动添加为这个新角色的成员,拥有新角色所有的权限。
+
+要使用这条命令,必须拥有 CREATE ROLE 权限或者是系统管理员。
+
+##### 示例
+
+创建一个角色,名为manager,密码为xxxxxxxxx。
+
+```shell
+openGauss=# CREATE ROLE manager IDENTIFIED BY 'xxxxxxxxx';
+```
+
+创建一个角色,从2015年1月1日开始生效,到2026年1月1日失效。
+
+```shell
+openGauss=# CREATE ROLE miriam WITH LOGIN PASSWORD 'xxxxxxxxx' VALID BEGIN '2015-01-01' VALID UNTIL '2026-01-01';
+```
+
+#### 查看角色
+
+可以使用SELECT语句或gsql的元命令du或者du+查看角色。
+
+```shell
+SELECT * FROM pg_roles;
+```
+
+```shell
+\du
+```
+
+```shell
+\du+
+```
+
+##### 示例
+
+查看所有角色名包括内置角色。
+
+```shell
+openGauss=# SELECT rolname from pg_roles;
+```
+
+查看现有角色不包含内置角色。
+
+```shell
+openGauss=# \du
+```
+
+#### 修改角色
+
+##### 修改用户名
+
+可以使用ALTER ROLE语句修改一个已经存在的角色名。
+
+```shell
+ALTER ROLE oldrolename RENAME TO newrolename;
+```
+
+其中:
+
+- oldrolename:旧的角色名。
+- newrolename:新的角色名。
+
+##### 修改用户示例
+
+将角色名manager修改为newmanager。
+
+```shell
+openGauss=# ALTER ROLE manager RENAME TO newmanager;
+```
+
+##### 修改用户密码
+
+可以使用ALTER ROLE语句修改一个角色的登录密码。
+
+```shell
+ALTER ROLE rolename with PASSWORD 'password'
+```
+
+其中:
+
+- rolename:角色名。
+- password:密码。
+
+##### 修改角色密码示例
+
+将manager的密码修改为xxxxxxxxx。
+
+```shell
+openGauss=# ALTER ROLE manager with PASSWORD 'xxxxxxxxx';
+```
+
+#### 删除角色
+
+可以使用DROP ROLE语句来删除角色。在数据库界面执行。
+
+```shell
+DROP ROLE rolename;
+```
+
+其中:rolename为角色名。
+
+##### 示例
+
+删除manager角色。
+
+```shell
+openGauss=# DROP ROLE manager;
+```
+
+#### 角色授权
+
+可以使用GRANT语句来对角色授权。
+
+对角色授予表或视图的操作权限:
+
+```shell
+GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...]
+ | ALL [ PRIVILEGES ] }
+ ON { [ TABLE ] table_name [, ...]
+ | ALL TABLES IN SCHEMA schema_name [, ...] }
+ TO { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ WITH GRANT OPTION ];
+```
+
+对角色授予序列的操作权限:
+
+```shell
+GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...]
+ | ALL [ PRIVILEGES ] }
+ ON { [ [ LARGE ] SEQUENCE ] sequence_name [, ...]
+ | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
+ TO { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ WITH GRANT OPTION ];
+```
+
+对角色授予数据库的操作权限:
+
+```shell
+GRANT { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...]
+ | ALL [ PRIVILEGES ] }
+ ON DATABASE database_name [, ...]
+ TO { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ WITH GRANT OPTION ];
+```
+
+对角色授予函数的操作权限:
+
+```shell
+GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
+ ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
+ | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
+ TO { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ WITH GRANT OPTION ];
+```
+
+对角色授予过程语言的操作权限:
+
+```shell
+GRANT { USAGE | ALL [ PRIVILEGES ] }
+ ON LANGUAGE lang_name [, ...]
+ TO { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ WITH GRANT OPTION ];
+```
+
+将模式的访问权限赋予指定的角色:
+
+```shell
+GRANT { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
+ ON SCHEMA schema_name [, ...]
+ TO { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ WITH GRANT OPTION ];
+```
+
+对角色授予表空间的操作权限:
+
+```shell
+GRANT { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
+ ON TABLESPACE tablespace_name [, ...]
+ TO { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ WITH GRANT OPTION ];
+```
+
+将角色rolename1的成员关系赋予角色rolename2:
+
+```shell
+GRANT rolename1 [, ...] TO rolename2 [, ...] [ WITH ADMIN OPTION ]
+```
+
+其中:
+
+- SELECT、INSERT、UPDATE、DELETE、REFERENCES、TRIGGER、USAGE、CREATE、CONNECT、TEMPORARY、TEMP、EXECUTE、ALL PRIVILEGES:用户的操作权限,ALL PRIVILEGES表示所有的权限。
+- ON字句:用于指定权限授予的对象。
+- tablename:表名。
+- TO字句:用来指定被赋予权限的角色。
+- rolename1、rolename2:角色名。
+- PUBLIC:表示该权限要赋予所有角色,包括那些以后可能创建的用户。
+- WITH GRANT OPTION:被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC。
+- sequence_name:序列名。
+- database_name:数据库名。
+- function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]:函数名及其参数。
+- lang_name:过程语言名。
+- schema_name:模式名。
+- tablespace_name:表空间名。
+- WITH ADMIN OPTION:表示成员随后就可以将角色的成员关系赋予其他角色,以及撤销其他角色的成员关系。
+
+##### 示例
+
+对manager授予数据库database1的CREATE权限。·
+
+```shell
+openGauss=# GRANT CREATE ON DATABASE database1 TO manager;
+```
+
+对所有用户授予表table1的所有权限。
+
+```shell
+openGauss=# GRANT ALL PRIVILEGES ON TABLE table1 TO PUBLIC;
+```
+
+#### 删除用户权限
+
+可以使用REVOKE语句来撤销一个或多个角色的权限。
+
+撤销角色对表的操作权限:
+
+```shell
+REVOKE [ GRANT OPTION FOR ]
+ { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }[, ...]
+ | ALL [ PRIVILEGES ] }
+ ON { [ TABLE ] table_name [, ...]
+ | ALL TABLES IN SCHEMA schema_name [, ...] }
+ FROM { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ CASCADE | RESTRICT ];
+```
+
+撤销角色对序列的操作权限:
+
+```shell
+REVOKE [ GRANT OPTION FOR ]
+ { { SELECT | UPDATE | ALTER | DROP | COMMENT }[, ...]
+ | ALL [ PRIVILEGES ] }
+ ON { [ [ LARGE ] SEQUENCE ] sequence_name [, ...]
+ | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
+ FROM { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ CASCADE | RESTRICT ];
+```
+
+撤销角色对数据库的操作权限:
+
+```shell
+REVOKE [ GRANT OPTION FOR ]
+ { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...]
+ | ALL [ PRIVILEGES ] }
+ ON DATABASE database_name [, ...]
+ FROM { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ CASCADE | RESTRICT ];
+```
+
+撤销角色对函数的操作权限:
+
+```shell
+REVOKE [ GRANT OPTION FOR ]
+ { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
+ ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
+ | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
+ FROM { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ CASCADE | RESTRICT ];
+```
+
+撤销角色对过程语言的操作权限:
+
+```shell
+REVOKE [ GRANT OPTION FOR ]
+ { USAGE | ALL [ PRIVILEGES ] }
+ ON LANGUAGE lang_name [, ...]
+ FROM { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ CASCADE | RESTRICT ];
+```
+
+撤销角色对模式的操作权限:
+
+```shell
+REVOKE [ GRANT OPTION FOR ]
+ { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
+ ON SCHEMA schema_name [, ...]
+ FROM { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ CASCADE | RESTRICT ];
+
+```
+
+撤销角色对表空间的操作权限:
+
+```shell
+REVOKE [ GRANT OPTION FOR ]
+ { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
+ ON TABLESPACE tablespace_name [, ...]
+ FROM { [ GROUP ] role_name | PUBLIC } [, ...]
+ [ CASCADE | RESTRICT ];
+```
+
+删除rolename2的rolename1之间的成员关系:
+
+```shell
+REVOKE [ ADMIN OPTION FOR ] rolename1 [, ...] FROM rolename2 [, ...] [ CASCADE | RESTRICT ]
+```
+
+其中:
+
+- GRANT OPTION FOR:表示只是撤销对该权限的授权的权力,而不是撤销该权限本身。
+- SELECT、INSERT、UPDATE、DELETE、REFERENCES、TRIGGER、USAGE、CREATE、CONNECT、TEMPORARY、TEMP、EXECUTE、ALL PRIVILEGES:用户的操作权限,ALL PRIVILEGES表示所有的权限。
+- ON字句:用于指定撤销权限的对象。
+- table_name:表名。
+- FROM字句:用来指定被撤销权限的角色。
+- rolename1、rolename2:角色名。
+- PUBLIC:表示撤销隐含定义的、拥有所有角色的组,但并不意味着所有角色都失去了权限,那些直接得到的权限以及通过一个组得到的权限仍然有效。
+- sequence_name:序列名。
+- CASCADE:撤销所有依赖性权限。
+- RESTRICT:不撤销所有依赖性权限。
+- database_name:数据库名。
+- function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]:函数名及其参数。
+- lang_name:过程语言名。
+- schema_name:模式名。
+- tablespace_name:表空间名。
+- ADMIN OPTION FOR:表示传递的授权不会自动收回。
+
+##### 示例
+
+对manager授予数据库database1的CREATE权限。
+
+```shell
+openGauss=# GRANT CREATE ON DATABASE database1 TO manager;
+```
+
+对所有用户撤销表table1的所有权限。
+
+```shell
+openGauss=# REVOKE ALL PRIVILEGES ON TABLE table1 FROM PUBLIC;
+```
+
+### 管理数据库
+
+#### 创建数据库
+
+可以使用CREATE DATABASE语句来创建数据库。在数据库界面使用。
+
+```shell
+CREATE DATABASE databasename;
+```
+
+其中:databasename为数据库名。
+
+要使用这条命令,必须拥有CREATEDB权限。
+
+##### 示例
+
+创建一个数据库database1。
+
+```shell
+openGauss=# CREATE DATABASE database1;
+```
+
+#### 选择数据库
+
+可以使用\c语句来选择数据库。
+
+```shell
+\c databasename;
+```
+
+其中:databasename为数据库名称。
+
+##### 示例
+
+选择database_example数据库。
+
+```shell
+openGauss=# \c database_example;
+```
+
+#### 查看数据库
+
+可以使用\l语句来查看数据库。
+
+```shell
+\l;
+```
+
+##### 示例
+
+查看所有数据库。
+
+```shell
+openGauss=# \l;
+```
+
+#### 删除数据库
+
+可以使用DROP DATABASE语句来删除数据库。
+
+> **注意:**
+>删除数据库要谨慎操作,一旦删除,数据库中的所有表和数据都会删除。
+
+```shell
+DROP DATABASE databasename;
+```
+
+其中:databasename为数据库名称。
+
+DROP DATABASE会删除数据库的系统目录项并且删除包含数据的文件目录。
+
+DROP DATABASE只能由超级管理员或数据库管理者执行。
+
+##### 示例
+
+删除databaseexample数据库。
+
+```shell
+openGauss=# DROP DATABASE databaseexample;
+```
+
+#### 备份数据库
+
+gs_dump支持将数据库信息导出至纯文本格式的SQL脚本文件或其他归档文件中。
+
+```shell
+gs_dump [OPTION]... [DBNAME]
+gs_dump -p port_number postgres -f dump1.sql
+```
+
+其中:
+
+- DBNAME前面不需要加短或长选项。DBNAME指定要连接的数据库。 例如: 不需要-d,直接指定DBNAME。
+- dump1.sql:数据库备份的文件。
+- option:gs_dump命令参数选项,多个参数之间可以使用空格分隔。常用的gs_dump命令参数选项如下:
+ - -F, --format=c|d|t|p:选择输出格式。格式如下:
+ - p|plain:输出一个文本SQL脚本文件(默认)。
+ - c|custom:输出一个自定义格式的归档,并且以目录形式输出,作为gs_restore输入信息。该格式是最灵活的输出格式,因为能手动选择,而且能在恢复过程中将归档项重新排序。该格式默认状态下会被压缩。
+ - d|directory:该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。
+ - t|tar:输出一个tar格式的归档形式,作为gs_restore输入信息。tar格式与目录格式兼容;tar格式归档形式在提取过程中会生成一个有效的目录格式归档形式。但是,tar格式不支持压缩且对于单独表有8GB的大小限制。此外,表数据项的相应排序在恢复过程中不能更改.
+ - -h, --host=HOSTNAME:指定主机名。
+ - -p, --port=PORT:指定端口。
+ - -U, --username=NAME:指定连接的用户名。
+ - -W, --password=PASSWORD:指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W选项;如果没有-W选项,并且不是系统管理员,“Dump Restore工具”会提示用户输入密码。
+ - -w, --no-password:不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。
+
+##### 示例
+
+执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.sql文件格式为纯文本格式。
+
+```shell
+[openGauss@localhost ~]# gs_dump -U omm -W password -f backup/MPPDB_backup.sql -p port postgres -F p
+```
+
+执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.dmp文件格式为自定义归档格式。
+
+```shell
+gs_dump -U omm -W password -f backup/MPPDB_backup.dmp -p port postgres -F c
+```
+
+#### 恢复数据库
+
+gs_restore是openGauss提供的针对gs_dump导出数据的导入工具。通过此工具可将由gs_dump生成的导出文件进行导入。
+
+```shell
+gs_restore [OPTION]... FILE
+```
+
+其中:
+
+- FILE没有短选项或长选项。用来指定归档文件所处的位置。
+- 作为前提条件,需输入dbname或-l选项。不允许用户同时输入dbname和-l选项。
+- gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用“-c” 参数,在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。
+- option:通用参数如下:
+ - -f,--file=FILENAME:指定生成脚本的输出文件,或使用-l时列表的输出文件。
+ - -d, --dbname=NAME:连接数据库dbname并直接导入到该数据库中。
+ - -h, --host=HOSTNAME:指定主机名。
+ - -p, --port=PORT:指定端口。
+ - -U, --username=NAME:指定连接的用户名。
+ - -W, --password=PASSWORD:指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W参数;如果没有-W参数,并且不是系统管理员,“gs_restore”会提示用户输入密码。
+
+##### 示例
+
+执行gs_restore,将导出的MPPDB_backup.dmp文件(自定义归档格式)导入到postgres数据库。
+
+```shell
+[openGauss@localhost ~]# gs_restore -W password backup/MPPDB_backup.dmp -p port -d postgres
+```
|