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以另一种形式显示。

用例:

相关推荐
长征coder5 分钟前
AWS MySQL 读写分离配置指南
mysql·云计算·aws
醇醛酸醚酮酯20 分钟前
Qt项目锻炼——TODO清单(二)
开发语言·数据库·qt
ladymorgana40 分钟前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
PanZonghui44 分钟前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
GreatSQL社区1 小时前
用systemd管理GreatSQL服务详解
数据库·mysql·greatsql
掘根1 小时前
【MySQL进阶】错误日志,二进制日志,mysql系统库
数据库·mysql
weixin_438335401 小时前
基础知识:mysql-connector-j依赖
数据库·mysql
小明铭同学1 小时前
MySQL 八股文【持续更新ing】
数据库·mysql
Mr_Xuhhh1 小时前
信号与槽的总结
java·开发语言·数据库·c++·qt·系统架构
Fireworkitte2 小时前
Redis 源码 tar 包安装 Redis 哨兵模式(Sentinel)
数据库·redis·sentinel