MySQL 数据库管理

在 MySQL 数据库的管理中,涵盖了多个方面的操作,包括数据库结构的查看、数据库与表的创建及删除、SQL 语言的运用、表中数据记录的管理以及数据库表的高级操作等,同时还涉及数据库用户的授权。以下是对这些内容的详细介绍。

一、使用 MySQL 数据库

1. 查看数据库结构

通过以下命令可以查看数据库结构:

[root@localhost ~]# mysql -u root -ppwd123
mysql> show databases;
mysql> use mysql
mysql> show tables;
mysql> describe user;
mysql> select * from user\G;

备注:

information_schema 数据库保存着关于 MySQL 服务器所维护的所有其他数据库的信息,例如数据库名、数据库的表、表栏的数据类型与访问权限等。

performance_schema 用于监控 MySQL server 在一个较低级别的运行过程中的资源消耗、资源等待等情况。

mysql 是 MySQL 服务正常运行所需的数据库,其中包含了用户认证相关的表。

2. 创建及删除数据库和表

(1)创建新库

使用以下命令创建新库:

mysql> create database auth;

(2)创建新表

首先使用 use auth; 切换到要操作的数据库,然后执行以下命令创建新表:

mysql> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));

备注:

DEFAULT '' 表示密码默认为空。

注意:

5.7 以前的版本的 password() 加密函数可以生成 16 位密文,5.7 后的 password() 函数可以生成 41 位的密文,其算法为 mysql_native_password 。设置密码字段的时候要考虑加密,提供的字符长度要够用,否则在添加记录时,如果使用了 password() 加密函数保存密码字段,会提示字符长度错误。8.0 的 MySQL 已经弃用 password() 。

(3)删除一个数据表

使用以下命令删除数据表:

mysql> DROP TABLE auth.users;

(4)删除一个数据库

使用以下命令删除数据库:

mysql>DROP DATABASE auth;

3. SQL 语言

SQL 语言主要包括以下几种类型:

DDL:数据定义语言(create、drop、alter)

DML:数据操纵语言(insert、update、delete)

DQL:数据查询语言(select)

DCL:数据控制语言(grant、revoke、commit、rollback)

4. 管理表中的数据记录

(1)插入数据记录

首先使用 use auth; 切换到相应数据库,然后执行以下命令插入数据:

mysql>INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD ('123456')); 
mysql>INSERT INTO users VALUES('lisi', PASSWORD('654321'));

(2)查询数据记录

执行以下命令查询数据:

mysql>select * from auth.users;
mysql>SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';

(3)修改数据记录

执行以下命令修改数据:

mysql>UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name= 'lisi'; 

查看修改结果:

mysql>SELECT * FROM auth.users;

此外:

mysql>UPDATE mysql.user SET authentication_string=PASSWORD('123457') WHERE user='root';
mysql>FLUSH PRIVILEGES; 

还可以通过以下命令修改 root 用户密码:

[root@www ~]# mysqladmin -u root -p'123457' password '123456'

(4)删除数据记录

使用以下命令删除数据:

mysql>DELETE FROM auth.users WHERE user_name='lisi'; 

查看删除结果:

mysql>SELECT * FROM auth.users;

5. 数据库表高级操作

(1)克隆表

通过以下命令克隆表:

mysql>create table user01 like auth.users;     //通过 LIKE 方法,复制 users 表生成 tmp 表,注意,此表为空
mysql>insert into user01 select * from auth.users;     //通过 player 表生成 tmp 表内数据记录 

(2)删除表

执行以下命令删除表中的数据:

mysql> delete from user01 where user_name='zhangsan';
mysql>delete from user01; 

重新插入数据:

mysql>insert into user01 select * from auth.users;

使用以下命令清空表数据并释放空间:

mysql>truncate table user01; 

查看表中的记录数量:

mysql>select count(*) from user01;

备注:

truncate 和 delete 的区别:

  • truncate 删除表中的内容,不删除表结构,释放空间。
  • delete 删除表中的内容,不删除表结构,但不释放空间。

    truncate 删除数据后重新写数据会从 1 开始,delete 删除数据后只会从删除前的最后一行续写;内存空间上,truncate 省空间。

    delete 属于 DML 语句,而 truncate 和 drop 都属于 DDL 语句。delete 可以在后续加上 where 进行针对行的删除,truncate 和 drop 后面只能加上表名,直接删除表,无法使用 where 。

    使用 drop table 表名可以删除表,内容连带结构一起删除。

    (3)临时表

    执行以下命令查看临时表是否存在:

    mysql>select * from mytmp;
    

    创建临时表:

    mysql>CREATE TEMPORARY TABLE `mytmp` ( 
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
     `level` int(10) NOT NULL, 
    PRIMARY KEY (id)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    插入数据:

    mysql> insert into mytmp(name,level) values('aa',10);
    

    查看临时表中的数据:

    mysql>select * from mytmp;
    

    退出当前连接后重新连接,临时表将不存在。

    二、数据库用户授权

    1. 授予权限

    使用以下命令授予权限:

    mysql>GRANT select ON auth.* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';
    

    2. 查看权限

    使用以下命令查看权限:

    mysql> SHOW GRANTS FOR 'zhangsan'@'localhost';
    

    3. 验证权限

    通过以下命令验证权限:

    [root@localhost ~]# mysql -u zhangsan -p123456
    

    通过以上对 MySQL 数据库管理的各项操作的介绍,希望能对您在 MySQL 数据库的使用和管理中有所帮助。