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 = '数据库'; 
欢迎访问我的个人博客~~~

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号