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:数据定义语言(createdropalter

DML:数据操纵语言(insertupdatedelete

DQL:数据查询语言(select

DCL:数据控制语言(grantrevokecommitrollback

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;

备注

truncatedelete 的区别:

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

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

delete 属于 DML 语句,而 truncatedrop 都属于 DDL 语句。delete 可以在后续加上 where 进行针对行的删除,truncatedrop 后面只能加上表名,直接删除表,无法使用 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 数据库的使用和管理中有所帮助。

相关推荐
美狐美颜sdk3 小时前
直播APP开发技术栈详解:视频美颜SDK、人脸识别与实时渲染
android·人工智能·音视频·美颜sdk·直播美颜sdk
我要见SA姐13 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
我要见SA姐14 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
这个DBA有点耶6 小时前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构
奈斯先生Vector8 小时前
当模型版本不断变化,RelayRouter 能否帮助 AI 应用摆脱深度绑定
android·java·人工智能·开源·aigc
TimeFine8 小时前
让强模型做“总工”,让高性价比模型写代码
android
又见情义10 小时前
RK3568 Android 13 屏蔽 healthd 电池日志经验分享
android
oradh12 小时前
Oracle联机日志文件损坏故障总结
数据库·oracle·oracle联机日志文件损坏
辰辉创聚13 小时前
炎症与免疫相关细胞因子:信号通路、分类及科研检测应用
python·oracle·nycodenz·重组il-6蛋白·抗tnf-α抗体·il-1β蛋白
古法安卓13 小时前
Android-Fork 机制详解
android·java·android studio