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

相关推荐
百锦再24 分钟前
Android Studio开发 SharedPreferences 详解
android·ide·android studio
博睿谷IT99_35 分钟前
数据库证书可以选OCP认证吗?
数据库·oracle·开闭原则·ocp认证
青春给了狗36 分钟前
Android 14 修改侧滑手势动画效果
android
CYRUS STUDIO43 分钟前
Android APP 热修复原理
android·app·frida·hotfix·热修复
火柴就是我2 小时前
首次使用Android Studio时,http proxy,gradle问题解决
android
limingade2 小时前
手机打电话时电脑坐席同时收听对方说话并插入IVR预录声音片段
android·智能手机·电脑·蓝牙电话·电脑打电话
浩浩测试一下2 小时前
计算机网络中的DHCP是什么呀? 详情解答
android·网络·计算机网络·安全·web安全·网络安全·安全架构
青春给了狗4 小时前
Android 14 系统统一修改app启动时图标大小和圆角
android
pengyu4 小时前
【Flutter 状态管理 - 柒】 | InheritedWidget:藏在组件树里的"魔法"✨
android·flutter·dart
浩浩测试一下5 小时前
SQL注入高级绕过手法汇总 重点
数据库·sql·安全·web安全·网络安全·oracle·安全架构