Experimento + teoría: adición, eliminación, modificación, consulta y autorización del usuario de la base de datos de MySQL, súper detallada, adecuada para principiantes. ! !

Uno, el funcionamiento básico de la base de datos.

1.1, acceso a la base de datos MySQL

1.1.1, inicie sesión en el servidor MySQL

Primero iniciamos sesión en el servidor MySQL, después del proceso de inicialización después de la instalación, la raíz de administrador predeterminada de la base de datos MySQL. Inicie sesión en la base de datos MySQL local como usuario root y realice las siguientes operaciones.

[root@localhost ~]# mysql -u root -p   ##用root用户登录
Enter password:   ##输入密码
mysql>      ## 进来了

1.1.2, acceder a la declaración de operación de MySQL

mysql> show databases;   ## 查看数据库信息
+--------------------+
| Database           |
+--------------------+
| information_schema |              |
| mysql              |
| performance_schema |
| root               |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

1.1.3, Salir del entorno operativo "mysql>"

En el entorno operativo "mysql>", ejecute exit, quit o \ t para salir de la herramienta de comando mysql> y volver al entorno de shell original.

mysql> exit
Bye
[root@localhost ~]# 

1.2, use la base de datos MySQL

1.2.1, ver la estructura de la base de datos

1.2.1.1, ver las bibliotecas contenidas en el servidor actual

Instrucción SHOW DATABASE: se utiliza para ver las bibliotecas contenidas en el servidor MySQL actual. Después de inicializar el servidor MySQL, se establecen cuatro bibliotecas por defecto: sys, mysql, information_schema y performance_schema (la biblioteca mysql contiene tablas relacionadas con la autenticación de usuarios). Realice las siguientes operaciones para ver.

mysql> show databases;   ## 查看数据库信息
+--------------------+
| Database           |
+--------------------+
| information_schema |              |
| mysql              |
| performance_schema |
| root               |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

1.2.1.2, ver las tablas contenidas en la biblioteca utilizada actualmente

Sentencia SHOW TABLES: se utiliza para ver las tablas contenidas en la biblioteca actual. Antes de esta operación, debe utilizar la instrucción USE para cambiar a la biblioteca utilizada. Por ejemplo: Realice las siguientes operaciones para mostrar todas las tablas contenidas en la biblioteca mysql.

mysql> use mysql   ##切换到这个库
Database changed
mysql> show tables;  ##查看当前库中包含的表
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
........  ##以下省略 ..........
| users                     |
+---------------------------+
32 rows in set (0.00 sec)

Los archivos de la base de datos MySQL se almacenan en el directorio / usr / local / mysql / data.Cada base de datos corresponde a un subdirectorio para almacenar archivos de tablas de datos. Cada dato corresponde a tres archivos y los sufijos son ".frm", "myd" y ".myi". Por supuesto, hay algunos que terminan en opt, csm, csv e ibd.

1.2.1.3, ver la estructura de la tabla

Sentencia DESCRIBE: se utiliza para visualizar la estructura de la tabla, es decir, la información de los campos (columnas) que componen la tabla. Es necesario formular "nombre de la biblioteca. Nombre de la tabla" como parámetro; si solo especifica el parámetro indicado, debe cambiar a la biblioteca de destino especificada mediante una instrucción USE.
Realice las siguientes operaciones para ver la estructura de la tabla de usuario en la biblioteca mysql, que tiene el mismo efecto que ejecutar directamente la declaración "DESCRIBE mysql.user;"

mysql> use mysql
Database changed
mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.00 sec)   ## 中间省略

1.2.2, lenguaje de definición de datos DDL

12.2.1, crear una nueva biblioteca

Declaración CREATE DAREBASE: utilizada para crear una nueva biblioteca, debe especificar el nombre de la base de datos como parámetro.
Por ejemplo: realice las siguientes operaciones para crear una biblioteca llamada abc

mysql> create database abc;  ## 创建新的库
Query OK, 1 row affected (0.00 sec)

La base de datos recién creada es espacio-temporal y no contiene ninguna tabla. Una carpeta con el mismo nombre que la biblioteca recién creada se generará automáticamente en el directorio / usr / local / mysql / data

12.2.2, crear una nueva tabla

Declaración CREATE TABLE: se utiliza para crear una nueva tabla en la biblioteca actual, es necesario especificar el nombre de la tabla de datos como parámetro y definir los campos utilizados por la tabla.

mysql> use abc;  ## 跳转到abc库
mysql> create table abc (user_name CHAR(16) NOT NULL,user_passwd CHAR(48) DEFAULT '',PRIMARY KEY(user_name)); 
Query OK, 0 rows affected (0.00 sec)
mysql> describe abc;  ## 查看刚才创建的表
+-------------+----------+------+-----+---------+-------+
| Field       | Type     | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name   | char(16) | NO   | PRI | NULL    |       |
| user_passwd | char(48) | YES  |     |         |       |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.02 sec)

En la tabla anterior, "Nombre de usuario" es una cadena de no más de 16 caracteres y no puede estar vacía;
"Contraseña" es una cadena de no más de 48 caracteres (use el cifrado de función MySQL al insertar registros), el valor predeterminado está en blanco Cuerda.
La instrucción PRIMARY establece el nombre del campo de clave principal.

12.2.3, eliminar una base de datos

Declaración DROP DATABASE: se utiliza para eliminar la biblioteca especificada, es necesario especificar el nombre de la biblioteca como parámetro. Tales como: realice las siguientes operaciones para eliminar la biblioteca denominada abc

mysql> drop database abc; ##删除 abc 数据库
Query OK, 1 row affected (0.00 sec)
mysql> show database;  ## 查看库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| TX                 |
| mysql              |
| performance_schema |
| root               |
| zbc                |
+--------------------+
6 rows in set (0.00 sec)

12.2.4, eliminar una tabla de datos

Declaración DROP TABLE: se utiliza para eliminar tablas en la biblioteca, debe especificar "nombre de biblioteca.nombre de tabla" como parámetro; si solo especifica el parámetro de nombre de tabla, debe cambiar a la base de datos de destino ejecutando una instrucción USE. Tales como: realice las siguientes operaciones para eliminar la tabla de datos denominada zbc

mysql> drop table mysql.zbc;
Query OK, 0 rows affected (0.00 sec)

1.2.3, lenguaje de manipulación de datos DML, declaración de consulta de datos DQL

1.2.3.1, insertar registro de datos

Instrucción INSERT INTO: se utiliza para insertar nuevos registros de datos en la tabla.

mysql> create database kk;
Query OK, 1 row affected (0.00 sec)  ## 创建库 kk
mysql> create table KK (user_name CHAR(16) NOT NULL,user_passwd CHAR(48) DEFAULT '',PRIMARY KEY(user_name)); 
Query OK, 0 rows affected (0.00 sec)   ## 创建 表 KK
mysql> insert into  KK(user_name,user_passwd)values('lisi',PASSWORD('123456'));
Query OK, 1 row affected, 1 warning (0.00 sec)  ## 在表中插入记录,按指定插入
mysql> insert into KK values('wangwu',PASSWORD('456789'));
Query OK, 1 row affected, 1 warning (0.00 sec)  ## 在表中插入记录,按顺序插入
mysql> insert into KK(user_name,user_passwd) values('zhao','123456');  ## 不加 PASSWORD(),就是明文
Query OK, 1 row affected (0.00 sec)

1.2.3.2, consultar registros de datos

Al representar todos los campos, puede utilizar el carácter comodín *, si desea mostrar todos los registros de datos, puede omitir la cláusula where. Por ejemplo: Al realizar las siguientes operaciones, se mostrarán todos los registros de la tabla, pero debido a la adición de PASSWORD (), la cadena de contraseña está cifrada, por lo que el contenido real de la contraseña no se mostrará directamente.

mysql> select * from kk.KK;  ## 查询 库kk中的表KK,所有内容
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| wangwu    | *E710DC2512FCF6F18FE0D652B53290DCB11F3334 |
| zhao      | 123456                                    |
+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

Inserte la descripción de la imagen aquí
Cuando necesita una condición específica para encontrar registros, la cláusula where es esencial. Por ejemplo: busque el registro de lisi, muestre la información del campo de nombre de usuario y contraseña, puede realizar las siguientes operaciones

mysql> select * from kk.KK where user_name='lisi';
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)

1.2.3.3, modificar registros de datos

Declaración UPDATE: se utiliza para modificar y actualizar registros de datos en la tabla.
El formato de la oración es el siguiente:
ACTUALIZAR indica que SET nombre de campo 1 = valor de campo 1 [, nombre de campo 2 = valor de campo 2] DONDE la expresión condicional
ejecuta las siguientes operaciones para modificar el registro del nombre de usuario "lisi" en la tabla KK y cambiar la cadena de contraseña Establecer en un valor nulo. Verifique el contenido del registro para encontrar el valor de la cadena de contraseña del usuario lisi para que esté en blanco

mysql> update kk.KK set user_passwd='' where user_name='lisi';
mysql> select * from kk.KK;  ## 修改完后进行验证
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      |                                           |
| wangwu    | *E710DC2512FCF6F18FE0D652B53290DCB11F3334 |
| zhao      | 123456                                    |
+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

1.2.3.4, borrar registros de datos

Declaración DELETE: se utiliza para eliminar el registro de datos especificado en la tabla.

El formato de la declaración es el siguiente: DELETE FROM indica la expresión condicional DÓNDE

Realice las siguientes operaciones para borrar el registro de datos del usuario llamado "lisi" en la tabla KK. Verifique el contenido del registro y encuentre que el registro de datos del usuario "lisi" ha desaparecido

mysql> delete from kk.KK where user_name='lisi';
Query OK, 1 row affected (0.00 sec)  ## 删除用户名为lisi的记录
mysql> select * from kk.KK;  ## 查询一下KK表中lisi记录是否删除
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| wangwu    | *E710DC2512FCF6F18FE0D652B53290DCB11F3334 |
| zhao      | 123456                                    |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

Dos, declaración de control de datos DCL

2.1, establecer permisos de usuario

  • La declaración DCL establece los permisos de usuario (cuando el usuario no existe, cree un nuevo usuario)

GRANT lista de permisos en el nombre de la base de datos. Nombre de la tabla TO nombre de usuario @ dirección de origen [IDENTIFIEDBY'password ']

mysql> grant select on kk.* to 'xiaoqi'@'localhost' identified by '123456'; 
 ## 给xiaoqi用户授权可以查看kk库里面表,用户不存在时,则新建用户,并写入密码123456
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;  ## 刷新
Query OK, 0 rows affected (0.00 sec)
mysql> exit  ## 退出当前用户
Bye
[root@localhost ~]# mysql -u xiaoqi -p  ##用xiaoqi用户登录数据库
Enter password: 
mysql> select * from kk.KK;   
## 验证授权访问操作,查看kk库里面的KK表,验证成功!
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| wangwu    | *E710DC2512FCF6F18FE0D652B53290DCB11F3334 |
| zhao      | 123456                                    |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
mysql> drop database kk;  
## 验证非授权访问操作,没有给xiaoqi用户授权删除库的权力,所以无法删除!
ERROR 1044 (42000): Access denied for user 'xiaoqi'@'localhost' to database 'kk'

Si desea que un usuario (o un nuevo usuario) obtenga todos los permisos, puede hacer lo siguiente

## 这边我们把之前的 select 改成 all,这样此用户就可获得对kk库的所有权限!
mysql> grant all on kk.* to 'xiaoqi'@'localhost' identified by '123456'; 

2.2. Ver permisos de usuario

MOSTRAR SUBVENCIONES para nombre de usuario @ dirección de origen;

mysql>  show grants for xiaoqi@localhost;
+------------------------------------------------+
| Grants for xiaoqi@localhost                    |
+------------------------------------------------+
| GRANT USAGE ON *.* TO 'xiaoqi'@'localhost'     |
| GRANT SELECT ON "kk".* TO 'xiaoqi'@'localhost' |
+------------------------------------------------+
2 rows in set (0.00 sec)

2.3, revocar permisos de usuario

ELIMINAR la lista de permisos EN el nombre de la base de datos. Nombre de la tabla FROM nombre de usuario @ dirección de origen. Para
revocar los permisos de usuario, debe iniciar sesión con la máxima autoridad de root para que se revoquen.

mysql> revoke select on kk.* from xiaoqi@localhost;  ## 撤销授权用户的权限
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for xiaoqi@localhost;  ## 查看被撤销授权用户的权限
+--------------------------------------------+
| Grants for xiaoqi@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO 'xiaoqi'@'localhost' |
+--------------------------------------------+
1 row in set (0.01 sec)

Supongo que te gusta

Origin blog.csdn.net/m0_46563938/article/details/108488022
Recomendado
Clasificación