MySQL基本命令--系统+用户+表

前言:在当今数据驱动的时代,关系型数据库依然是构建信息系统的中坚力量,而MySQL作为开源领域中最广泛使用的数据库管理系统之一,以其高性能、稳定性和易用性赢得了开发者和企业的青睐。无论是在小型博客系统中承担数据存储职责,还是在大规模电商平台中支撑复杂的业务逻辑,MySQL都展现出了卓越的灵活性和强大的扩展能力。

本文将作为你学习MySQL的开头,围绕MySQL的库命令和表命令进行讲解,希望您能在本文中找到有价值的内容。

一 关于MySQL的一些概念和误区

1.1 概念误区

我们平常都说MySQL数据库,但其实这样说是不对的。

我们平常说的MySQL,指的是是MySQL数据库管理系统。

也就是说,MySQL是管理多个数据库的系统。

在这个系统中:

  1. 一个MySQL可以同时存放多个数据库,理论上一个项目就对应一个数据库 。
  2. 一个 数据库中还可以同时包含多个数据表,而数据表才是真正用于存放数据的位置。
  3. 一个数据表可以拆分成多个字段,每个字段就是一个属性 。
  4. 一个数据表除了字段以外,还有很多行,每一行都是一条完整的数据。

1.2 MySQL的语句分类

MySQL系统对数据库的管理,也是通过命令行语句来进行管理的,基本上分为四种类型。

  1. DDL(Data Definition Languages)语句:数据定义语言 ,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象的定义。常用的语句关键字主要包括:create,drop,alter,rename,truncate
  2. DML(Data Manipulation Languages)语句:数据操纵语句 ,用于添加,删除,更新和查询数据库记录,并检查数据完整性,常用的语句关键字有:insert,delete,update等等
  3. DCL(Data Control Languages)语句:数据控制语句 ,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库,表,字段,用户的访问权限和安全级别。主要的语句的关键字包括:grant,revoke等等
  4. DQL(Data Query Languages)语句:数据查询语句 ,用于从一个或多个表中检索信息。主要的语句关键字包括:select 。

二 MySQL的系统命令(以ubuntu系统为例)

2.1 查看mysql服务

查看mysql是否在运行中:

cpp 复制代码
sudo systemctl status mysql

如:

又如:

2.2 mysql服务的启动和停止

在linux命令行中输入:

cpp 复制代码
sudo systemctl start mysql //启动服务
sudo systemctl stop mysql  //停止服务‌

如下:

2.3 数据库的登录

cpp 复制代码
  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 新建用户

命令:

cpp 复制代码
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

解析:

  1. username:你将创建的用户名 。

  2. host:指定该用户在哪个主机上可以登陆 。如果是本地用户可用localhost ; 如果想让该用户可以从任意远程主机登陆,可以使用通配符%;如果想指定主机登录,则可指定IP地址。

  3. password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器(受MySQL密码策略影响,设置的密码可能需要符合密码策略)

例如:

1 密码过于简单

2 创建用户成功

3 创建其它用户(这里不再贴图展示)

cpp 复制代码
CREATE USER 'usertest02'@'192.127.0.1' IDENTIFIED BY '123456';//需要符合密码策略
CREATE USER 'usertest02'@'%' IDENTIFIED BY ''; //需要符合密码策略

2.3 查看所有用户

这里其实属于库方面的知识,因为MySQL本身管理众多数据库,那么我们的用户信息是否也在某个数据库中呢?

答案是是的,所有我们使用库语言去查询数据库中的用户信息(我们在这个章节不详细解释语句,在后续章节解释)。

2.2.1 直接从库中表查找

cpp 复制代码
SELECT user, host FROM mysql.user;

结果如下:

2.4 用户授权

命令:

cpp 复制代码
GRANT privileges ON databasename.tablename TO 'username'@'host'

说明:

  1. privileges:用户的操作权限,如SELECT(查看)INSERT(插入)UPDATE(更新)等,如果要授予所的权限则使用ALL。
  2. databasename:数据库名,如果要授予该用户对所有数据库操作权限可写为*。
  3. tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*

例如:

cpp 复制代码
GRANT SELECT, INSERT ON test.user TO 'usertest02'@'%';
GRANT ALL ON *.* TO 'usertest03'@'127.0.0.1';
GRANT ALL ON test1.* TO 'usertest04'@'%';

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

bash 复制代码
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

但极其不建议这么做,因为其抢占了root用户的权限,因此也不给演示。

2.5 查看权限

在 MySQL 中,可以使用以下命令查看用户的权限:

2.5.1 查看当前登录用户的权限

cpp 复制代码
SHOW GRANTS;

2.5.2 查看指定用户的权限

cpp 复制代码
SHOW GRANTS FOR 'username'@'host';
  • username:要查看权限的用户名。
  • host :用户的主机地址,例如 localhost%(表示所有主机)

2.6 设置与更改用户密码

命令:

cpp 复制代码
ALTER USER 'username'@'host' IDENTIFIED BY 'newpassword';

newpassword:新密码。

例如:

2.7 撤销用户权限

命令:

cpp 复制代码
REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';

说明:

  1. privilege_type
    • 要撤销的权限类型,例如 SELECTINSERTUPDATEALL PRIVILEGES 等。
  2. database_name.table_name
    • 指定权限作用的数据库和表。
    • 使用 *.* 表示所有数据库和表。
  3. 'username'@'host'
    • 指定要撤销权限的用户。
    • 'host' 通常是 localhost%(表示所有主机)。

例如:

2.8 删除用户

命令:

cpp 复制代码
DROP USER 'username'@'host';

三 MySQL库命令

在本章节中,你会看到很多用 [ ] 围起来的语句,这些语句属于额外扩展内容,可以加入也可以删除,取决于你的具体需求。

3.1 显示可用数据库

cpp 复制代码
SHOW databases;

显示所有数据库。

3.2 创建数据库

基本语法:

cpp 复制代码
create database [if not exists] databasename [default charset=utfname] ;
  1. databasename : 要创建的数据库名字。
  2. if not exists : 一般而言,一个数据库如果存在,则不能创建和其名字相同的数据库,如果一定要创建则会报错。这个语句的作用是在创建前检查是否有同名数据库,如果有则不创建,进而避免报错。
  3. default charset=codesetname 指定数据库的编码格式,其作用是是定义字符的存储和解析方式,确保多语言数据的正确处理 。codesetname 编码集名称, 不考虑这么多,优先使用 UTF-8 ‌:现代数据库(如 MySQL 推荐 utf8mb4

例如:

3.3 修改数据库

在MySQL5以后的版本中,MySQL不支持更改数据库的名称。我们所谓的修改数据库主要修改的是数据库的编码格式 .。

使用方法:

cpp 复制代码
alter database databasename default charset=codesetname;

例如:

3.4 数据库的删除

使用格式:

cpp 复制代码
drop database databasename;

3.5 查看数据库建表语句

使用说明:

cpp 复制代码
show create database databasename [\G] ;
  1. \G以另一种形式显示。

用例:

相关推荐
小黄人V10 分钟前
使用skywalking进行go的接口监控和报警
数据库·golang·skywalking
烂漫心空1 小时前
数据库的死锁相关(一)
数据库·sql·mysql
中草药z2 小时前
【Docker】Docker拉取部分常用中间件
运维·redis·mysql·docker·容器·nacos·脚本
星空2 小时前
Django 学习指南:从入门到精通(大体流程)
数据库·sqlite
码熔burning2 小时前
【MongoDB篇】MongoDB的索引操作!
数据库·mongodb·nosql
Rverdoser2 小时前
服务器和数据库哪一个更重要
数据库
StarRocks_labs2 小时前
StarRocks 查询优化器深度解析
数据库·starrocks·olap·数据查询·查询优化·logical rewrite
爱编程的小新☆2 小时前
【MySQL】增删改查(CRUD)
数据库·mysql
Yooyi_xin2 小时前
合并多个Excel文件到一个文件,并保留格式
数据库·windows·excel
Dklau-c4 小时前
『深夜_MySQL』详解数据库 && 探索数据库是如何存储的
数据库·mysql