在 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 数据库的使用和管理中有所帮助。