MySQL 数据库运维与管理相关命令

news/2024/11/13 4:32:53/

最开始,服务器部署使用的宝塔面板,数据库运维管理全都是在宝塔上可视化操作,并没有真正的面对数据库执行过命令。出于某些原因,后续不准备再继续使用宝塔面板,所以,记录一下关于 MySQL 数据库管理方面相关的方法和命令。

一、控制台

在服务器上,可使用 mysql 命令打开控制台:

mysql -uroot -p
Enter password: [输入密码]

二、用户管理

2.1 查询用户信息

进入 mysql 库,查询 user 表可查看用户信息:

  • User:用户名
  • Host:允许登录用户的主机,% 表示允许所有主机登录。
use mysql;
select * from user;

2.2 开启远程登录权限

同理,命令中的 % 表示允许所有远程主机登录,127.0.0.1localhost 表示允许本机登录。

# 赋予权限并修改密码
grant all privileges on *.* to 'root'@'%' with grant option;
alter user 'root'@'%' identified with mysql_native_password by 'root账户密码';
# 重新加载权限表
flush privileges;

2.3 创建新用户

  1. 使用 CREATE USER 创建用户

    命令语法:

    CREATE USER 'username'@'host' [ IDENTIFIED BY [ PASSWORD ] 'password' ] [ ,'username'@'host' [ IDENTIFIED BY [ PASSWORD ] 'password' ]]
    

    使用示例:

    CREATE USER 'test'@'localhost' IDENTIFIED BY 'testpassword';
    
  2. 使用 GRANT 创建用户

    该命令可以在创建用户同时指定用户的访问权限

    命令语法:

    GRANT <privileges> ON database.table TO user [IDENTIFIED BY [PASSWORD] 'password']
    

    使用示例:

    # 'test'.* 表示对 test库下的所有表具有ALL权限
    GRANT ALL ON test.* TO 'test'@localhost IDENTIFIED BY 'testpassword';
    

2.4 权限管理

权限类型(<privileges>):

  • SELECT:表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。
  • INSERT:表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。
  • DELETE:表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。
  • UPDATE:表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。
  • REFERENCES:表示授予用户可以创建指向特定的数据库中的表外键的权限。
  • CREATE:表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。
  • ALTER:表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。
  • SHOW VIEW:表示授予用户可以查看特定数据库中已有视图的视图定义的权限。
  • CREATE ROUTINE:表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。
  • ALTER ROUTINE:表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。
  • INDEX:表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。
  • DROP:表示授予用户可以删除特定数据库中所有表和视图的权限。
  • CREATE TEMPORARY TABLES:表示授予用户可以在特定数据库中创建临时表的权限。
  • CREATE VIEW:表示授予用户可以在特定数据库中创建新的视图的权限。
  • EXECUTE ROUTINE:表示授予用户可以调用特定数据库的存储过程和存储函数的权限。
  • LOCK TABLES:表示授予用户可以锁定特定数据库的已有数据表的权限。
  • ALL 或 ALL PRIVILEGES:表示以上所有权限。

指定授权范围:

  • *:表示当前数据库中的所有表。
  • *.*:表示所有数据库中的所有表。
  • db_name.*:表示某个数据库中的所有表,db_name 指定数据库名。
  • db_name.tbl_name:表示某个数据库中的某个表或视图,db_name 指定数据库名,tbl_name 指定表名或视图名。
  • tbl_name:表示某个表或视图,tbl_name 指定表名或视图名。
  • db_name.routine_name:表示某个数据库中的某个存储过程或函数,routine_name 指定存储过程名或函数名。

具体命令:

  1. 查询指定用户权限

    show grants for root;
    
  2. 授予用户权限

    命令语法:

    GRANT <privileges> ON database.table TO 'username'@'host';
    

    使用示例:

    # 为 test 用户授予 test 库下所有表的 SELECT, INSERT 权限
    GRANT SELECT, INSERT ON test.* TO 'test'@'%';
    
  3. 回收用户权限

    命令语法

    REVOKE <privileges> ON database.table FROM 'username'@'host';
    

    使用示例:

    # 回收 test 用户在 test 库下所有表的 SELECT, INSERT 权限
    REVOKE SELECT, INSERT ON test.* FROM 'test'@'%';
    

2.5 删除用户

可使用 DROP 命令删除用户,删除用户时需指定 host,默认删除 host% 的账户,如果有其他账户不会被一起删除,需要指定 host 才能删除。

命令语法:

DROP USER 'username'@'host' [ , 'username'@'host' ]

使用示例:

# 删除 test 用户的 localhost 主机
DROP USER 'test'@'localhost';

2.6 修改用户密码

  1. 修改登录用户的密码
    ALTER USER USER() IDENTIFIED BY 'new_password';
    

三、库管理

3.1 创建库

命令语法:

CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>] 
[[DEFAULT] COLLATE <校对规则名>];

命令说明:

  • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免命令因数据库已经存在而报错。
  • [DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。
  • [DEFAULT] COLLATE:指定字符集的默认校对规则。

常见字符集说明:

字符集长度说明
gbk2支持中文,但是不是国际通用字符集
utf83支持中英文混合场景,是国际通用字符集,只支持最长三个字节的 UTF-8 字符
latin11MySQL 默认字符集
utf8mb44完全兼容 UTF-8,用四个字节存储更多的字符

常见校对规则说明:

校验规则指的是字符集比较大小的时候依据的准则,每种字符集都包含自己默认的校验规则。针对规则名称最后面的后缀,我们可以总结如下:

  • _ai :不区分重音

  • _as :区分重音

  • _ci :不区分大小写

  • _cs :区分大小写

  • _bin :二进制

使用示例:

# 创建 test 数据库
CREATE DATABASE test;# 创建 test 数据库,并指定字符集和校验规则
CREATE DATABASE test DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_chinese_ci;

3.2 查看字符集

SHOW CREATE DATABASE <数据库名>;

3.3 删除库

DROP DATABASE <数据库名>;

http://www.ppmy.cn/news/31111.html

相关文章

Echarts 水波图实现

开发的项目中需要实现这样一个水波图&#xff0c;例如下图在echarts官网中找了很久没找到&#xff0c;后面是在Echarts社区中找到的&#xff0c;实现了大部分的样式&#xff0c;但是还有一些数据的展示没有实现。水波图的数值展示是默认整数百分比&#xff0c;我的需求是需要保…

【专项训练】泛型递归、树的递归

递归和循环没有明显的边界! 不要进行人肉递归! 找最近重复子问题,直接写递归! 数学归纳法思维:1,2,…… 70. 爬楼梯 https://leetcode.cn/problems/climbing-stairs/ 互斥,且加在一起是全部答案! 动态规划法:用数组做递推,就是动态规划!!! class Solution

UART 串口通信

第18.1讲 UART串口通信原理讲解_哔哩哔哩_bilibili 并行通信 一个周期同时发送8bit的数据&#xff0c;占用引脚资源多 串行通信 串行通信的通信方式&#xff1a; 同步通信 同一时钟下进行数据传输 异步通信 发送设备和接收设备的时钟不同 但是需要约束波特率&#xff08;…

Vue常见的事件修饰符

前言 vue一共给我们准备了6个事件修饰符&#xff0c;前三个比较常用&#xff0c;后三个少见&#xff0c;这里着重讲下前三个 1.prevent:阻止默认事件(常用) 2. stop:阻止事件冒泡(常用) 3. once:事件只触发一次(常用) 4.captrue:使用事件的捕捉模式(不常用) 5.self:只有event…

【JavaEE初阶】第四节.文件操作 和 IO (上篇)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、文件 1.1 文件的概念 1.2 文件的路径二、 Java中文件系统操作 2.1 File类的属性 2.2 File类的构造方法 2.3 File类的方法 …

Java中wait和sleep区别

文章目录1. Java中wait和sleep区别2. wait和sleep所属方法的不同3. wait的Demo3.1 没有synchronized同步代码块异常3.2 wait使用Demo4. sleep的Demo1. Java中wait和sleep区别 sleep属于Thread类中的static方法&#xff1b;wait属于Object类的方法sleep时线程状态进入TIMED_WAI…

Vue3笔记01 创建项目,Composition API,新组件,其他

Vue3 创建Vue3项目 vue-cli //查看vue/cli版本&#xff0c;确保在4.5.0以上 vue --version //安装或升级vue/cli npm install -g vue/cli //创建项目 vue create new_project //启动 cd new_project npm run serve 也可以通过vue ui进入图形化界面进行创建 vite 新一代前端…

规划数据指标体系方法(下)——新海盗模型

前面已经跟大家分享了规划数据指标体系的两种方法—— OSM 和 UJM 模型&#xff0c;分别从目标-策略以及用户旅途的角度阐述了规划数据指标体系的过程。今天我来跟大家分享最后一种规划数据指标体系的方法——新海盗模型。 了解新海盗模型 海盗模型&#xff0c;即 AARRR 模型&…