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

相关推荐
小蜜蜂嗡嗡13 分钟前
Android Studio flutter项目运行、打包时间太长
android·flutter·android studio
aqi0019 分钟前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体
zhangphil2 小时前
Android理解onTrimMemory中ComponentCallbacks2的内存警戒水位线值
android
你过来啊你2 小时前
Android View的绘制原理详解
android
移动开发者1号5 小时前
使用 Android App Bundle 极致压缩应用体积
android·kotlin
移动开发者1号5 小时前
构建高可用线上性能监控体系:从原理到实战
android·kotlin
ii_best10 小时前
按键精灵支持安卓14、15系统,兼容64位环境开发辅助工具
android
美狐美颜sdk10 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
晋阳十二夜11 小时前
【压力测试之_Jmeter链接Oracle数据库链接】
数据库·oracle·压力测试
恋猫de小郭15 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin