Mysql常见问题

@

1 用户权限管理

设置用户权限时的代码:

示例代码:
grant all privileges on *.* to 
'user_name'@'%' identified by 'thisisplaceforpw' with 
grant option;

格式如下:
grant all privileges on 数据库.表 to 
'用户名'@'登录地址' identified by '密码' with 
grant option;

一些常见符号说明:

符号 含义
*.* 第一个表示数据库,第二个表示表,.即所有数据库的所有表
user_name 被授权的用户
% 表示登录地址,%表示可以在任何IP地址登录
thisisplaceforpw 表示登录密码

常用的权限:

权限 说明
All、All Privileges 全部数据库的所有权限
Usage 是创建一个用户之后的默认权限,包括连接、登录权限。该权限不能被回收,即使使用REVOKE
Select 允许从表中查看数据,某些不查询表数据的select执行则不需要此权限,如Select 1+1, Select PI()+2;而且select权限在执行update/delete语句中含有where条件的情况下也是需要的
Insert 允许在表里插入数据,同时在执行analyze table,optimize table,repair table,create user语句的时候也需要Insert权限
Update 允许修改表中的数据的权限
Delete 允许删除行数据的权限
Create 允许创建数据库和表的权限
Drop 允许删除数据库、表、视图的权限,包括truncate table命令
Reload 允许执行flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启日志文件并刷新所有的表
Shutdown 允许关闭数据库实例,执行语句包括mysqladmin shutdown
Process 允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令。默认每个用户都可以执行show processlist命令,但是只能查询本用户的进程
File 允许在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile、select … into outfile、load file()函数
Grant 允许此用户授权或者收回给其他用户授予的权限,重新赋给管理员的时候需要加上这个权限
Reference 允许创建外键
Alter 允许修改表结构的权限,但必须要有Create和Insert权限配合。如果是rename表名,则要求有Alter和Drop原表,Create和Insert新表的权限
Show databases 允许通过执行show databases命令查看所有的数据库名
Super 允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令,change master to创建复制关系命令,以及create/alter/drop server等命令
Create temporary tables 允许创建临时表的权限
Lock tables 允许对拥有Select权限的表进行锁定或解锁,以防止其他链接对此表的读或写
Execute 允许执行存储过程和函数的权限
Replication slave 允许slave主机通过此用户连接master以便建立主从复制关系
Create view 允许创建视图的权限
Show view 允许通过执行show create view命令查看视图创建的语句
Create routine 允许创建存储过程、函数的权限,当授予此权限时会自动授予Execute和Alter routine权限
Alter routine 允许修改或者删除存储过程、函数的权限
Create user 允许创建、修改、删除、重命名user的权限
Event 允许查询、创建、修改、删除MySQL事件
Trigger 允许创建、删除、执行、显示触发器的权限
Create tablespace 允许创建、修改、删除表空间和日志组的权限

2 获取数据表列名

SELECT COLUMN_NAME, DATA_TYPE , COLUMN_COMMENT FROM 
 information_schema.COLUMNS WHERE 
 table_name = '表名' AND table_schema = '数据库'; 

3 更新千万级别的数据

当更新表中的数据时,涉及的数据达到了千万行,这个过程的更新可能会很耗时。可以采用以下方法:
计算出每条记录对应的值,将其保存在单独的一张表中,以后查询相应数据时使用join进行查询。

4 数据类型大小

参考:
[1] 各类数据类型大小
[2] char、varchar所占内存大小

5 获取某张表的字段

当所有数据库中只有一张表的名字为 table 时:

select COLUMN_NAME from 
information_schema.COLUMNS where 
table_name = 'table';

当其他数据库中可能也存在 table 时:

select COLUMN_NAME from
information_schema.COLUMNS where 
table_name = 'table' and table_schema = '数据库'; 

欢迎访问我的个人博客~~~

posted @ 2021-11-01 18:44  Milkha  阅读(41)  评论(0)    收藏  举报
编辑推荐:
· 大数据高并发核心场景实战,数据持久化之冷热分离
· 运维排查 | SaltStack 远程命令执行中文乱码问题
· Java线程池详解:高效并发编程的核心利器
· 从“看懂世界”到“改造世界”:AI发展的四个阶段你了解了吗?
· 协程本质是函数加状态机——零基础深入浅出 C++20 协程
阅读排行:
· 基于.net6的一款开源的低代码、权限、工作流、动态接口平台
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
· Claude Code 初体验 - Windows
· .NET 8 gRPC 实现高效100G大文件断点续传工具
· LinqPad:C#代码测试学习一品神器
点击右上角即可分享
微信分享提示