MySQL基本命令--系统+用户+表
前言:在当今数据驱动的时代,关系型数据库依然是构建信息系统的中坚力量,而MySQL作为开源领域中最广泛使用的数据库管理系统之一,以其高性能、稳定性和易用性赢得了开发者和企业的青睐。无论是在小型博客系统中承担数据存储职责,还是在大规模电商平台中支撑复杂的业务逻辑,MySQL都展现出了卓越的灵活性和强大的扩展能力。
本文将作为你学习MySQL的开头,围绕MySQL的库命令和表命令进行讲解,希望您能在本文中找到有价值的内容。
一 关于MySQL的一些概念和误区
1.1 概念误区
我们平常都说MySQL数据库,但其实这样说是不对的。
我们平常说的MySQL,指的是是MySQL数据库管理系统。
也就是说,MySQL是管理多个数据库的系统。
在这个系统中:
- 一个MySQL可以同时存放多个数据库,理论上一个项目就对应一个数据库 。
- 一个 数据库中还可以同时包含多个数据表,而数据表才是真正用于存放数据的位置。
- 一个数据表可以拆分成多个字段,每个字段就是一个属性 。
- 一个数据表除了字段以外,还有很多行,每一行都是一条完整的数据。
1.2 MySQL的语句分类
MySQL系统对数据库的管理,也是通过命令行语句来进行管理的,基本上分为四种类型。
- DDL(Data Definition Languages)语句:数据定义语言 ,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象的定义。常用的语句关键字主要包括:create,drop,alter,rename,truncate
- DML(Data Manipulation Languages)语句:数据操纵语句 ,用于添加,删除,更新和查询数据库记录,并检查数据完整性,常用的语句关键字有:insert,delete,update等等
- DCL(Data Control Languages)语句:数据控制语句 ,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库,表,字段,用户的访问权限和安全级别。主要的语句的关键字包括:grant,revoke等等
- DQL(Data Query Languages)语句:数据查询语句 ,用于从一个或多个表中检索信息。主要的语句关键字包括:select 。
二 MySQL的系统命令(以ubuntu系统为例)
2.1 查看mysql服务
查看mysql是否在运行中:
sudo systemctl status mysql
如:
又如:
2.2 mysql服务的启动和停止
在linux命令行中输入:
sudo systemctl start mysql //启动服务
sudo systemctl stop mysql //停止服务
如下:
2.3 数据库的登录
mysql -u 用户名 -p //回车后输入密码当需要连接到别的主机时,需要加上: -h 机器IP
如下:
2.4 MySQL的退出
登入mysql后,在mysql命令行输入quit,即可成功退出
二 MySQL的用户管理
注:以下所有命令,都在MySQL环境下执行,且大多数命令需要在MySQL管理员账户下,即root账户下(若不知道root账户密码请看这篇文章Linux 安装MySQL(Cenots版本)_mysql linux版本-CSDN博客)
2.1 为什么MySQL需要用户和用户权限?
我们都知道,MySQL是对数据库的一种管理系统,假设我们有成百上千条数据库,而只用我买的管理员账号,查看所有的数据,是不是会影响查看速率呢?
因此,MySQL中创建用户,是让用户和所管理的数据库建立某种关系,以此来摒弃不需要查看的数据库,提高速率。
那么为什么需要权限呢?
假设张三去完成A项目,李四去完成B项目,张三和李四是组内竞争和借鉴关系,因此李四获得了A项目数据库的查看和管理权限,并且在A项目上线的前一天,把张三的所有数据删了。张三该怎么办?
因此只使用用户,是存在安全隐患的,我们必须设置一些权限,以避免安全隐患。
2.2 新建用户
命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
解析:
-
username:你将创建的用户名 。
-
host:指定该用户在哪个主机上可以登陆 。如果是本地用户可用localhost ; 如果想让该用户可以从任意远程主机登陆,可以使用通配符%;如果想指定主机登录,则可指定IP地址。
-
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器(受MySQL密码策略影响,设置的密码可能需要符合密码策略)
例如:
1 密码过于简单
2 创建用户成功
3 创建其它用户(这里不再贴图展示)
CREATE USER 'usertest02'@'192.127.0.1' IDENTIFIED BY '123456';//需要符合密码策略
CREATE USER 'usertest02'@'%' IDENTIFIED BY ''; //需要符合密码策略
2.3 查看所有用户
这里其实属于库方面的知识,因为MySQL本身管理众多数据库,那么我们的用户信息是否也在某个数据库中呢?
答案是是的,所有我们使用库语言去查询数据库中的用户信息(我们在这个章节不详细解释语句,在后续章节解释)。
2.2.1 直接从库中表查找
SELECT user, host FROM mysql.user;
结果如下:
2.4 用户授权
命令:
GRANT privileges ON databasename.tablename TO 'username'@'host'
说明:
- privileges:用户的操作权限,如
SELECT(查看)
,INSERT(插入)
,UPDATE(更新)
等,如果要授予所的权限则使用ALL。
- databasename:数据库名,如果要授予该用户对所有数据库操作权限可写为*。
- tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用
*
表示,如*.*
。
例如:
GRANT SELECT, INSERT ON test.user TO 'usertest02'@'%';
GRANT ALL ON *.* TO 'usertest03'@'127.0.0.1';
GRANT ALL ON test1.* TO 'usertest04'@'%';
注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
但极其不建议这么做,因为其抢占了root用户的权限,因此也不给演示。
2.5 查看权限
在 MySQL 中,可以使用以下命令查看用户的权限:
2.5.1 查看当前登录用户的权限
SHOW GRANTS;
2.5.2 查看指定用户的权限
SHOW GRANTS FOR 'username'@'host';
username
:要查看权限的用户名。host
:用户的主机地址,例如localhost
或%
(表示所有主机)
2.6 设置与更改用户密码
命令:
ALTER USER 'username'@'host' IDENTIFIED BY 'newpassword';
newpassword:新密码。
例如:
2.7 撤销用户权限
命令:
REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';
说明:
privilege_type
:
- 要撤销的权限类型,例如
SELECT
、INSERT
、UPDATE
、ALL PRIVILEGES
等。database_name.table_name
:
- 指定权限作用的数据库和表。
- 使用
*.*
表示所有数据库和表。'username'@'host'
:
- 指定要撤销权限的用户。
'host'
通常是localhost
或%
(表示所有主机)。
例如:
2.8 删除用户
命令:
DROP USER 'username'@'host';
三 MySQL库命令
在本章节中,你会看到很多用 [ ] 围起来的语句,这些语句属于额外扩展内容,可以加入也可以删除,取决于你的具体需求。
3.1 显示可用数据库
SHOW databases;
显示所有数据库。
3.2 创建数据库
基本语法:
create database [if not exists] databasename [default charset=utfname] ;
- databasename : 要创建的数据库名字。
- if not exists : 一般而言,一个数据库如果存在,则不能创建和其名字相同的数据库,如果一定要创建则会报错。这个语句的作用是在创建前检查是否有同名数据库,如果有则不创建,进而避免报错。
- default charset=codesetname 指定数据库的编码格式,其作用是是定义字符的存储和解析方式,确保多语言数据的正确处理 。codesetname 编码集名称, 不考虑这么多,优先使用 UTF-8:现代数据库(如 MySQL 推荐
utf8mb4
)
例如:
3.3 修改数据库
在MySQL5以后的版本中,MySQL不支持更改数据库的名称。我们所谓的修改数据库主要修改的是数据库的编码格式 .。
使用方法:
alter database databasename default charset=codesetname;
例如:
3.4 数据库的删除
使用格式:
drop database databasename;
3.5 查看数据库建表语句
使用说明:
show create database databasename [\G] ;
- \G以另一种形式显示。
用例: