MariaDB/MySQL之用户管理及忘记数据管理员密码解决办法

作者:edgarxue  发布日期:2014-04-24 08:50:36

在MariaDB/MySQL当中,对用户进行分类管理,以及对不同类别的用户对不同的数据拥有不同的权限是非常有必要的,这样可以极大的增加数据的安全性。

一、用户账号

1、我们可以直接创建用户账:

mysql>create user username@'hostname' [identified by [password]'your_passwd']
//使用password关键字的话,可以加密密码

2、 也可以在授权的时候创建用户帐户:

mysql>grant all on *.* to username@'hostname' indentified by [password]'your_passwd'
//把所有用户的权限授予username@'hostname',密码是your_passwd

3、 如果需要更改用户名和密码的话:

mysql>rename user old_name@'old_host' to new_name@'new_host'
 //更改用户名
mysql>set password for user_name@'host'=password('new_passwd')
//修改密码

二、授权及取消授权

1、授权

GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [TABLE|FUNCTION|PROCEDURE] priv_level
TO username@hostname [IDENTIFIED BY 'password'], [username@hostname [],...]
            [REQUIRE SSL]
            [WITH with_option ...]
//priv_type #权限类型,如all、select、update等
//priv_level #权限有效范围,可以使用一下方式限定:
       *
       *.*
       db_name.*
       db_name.tbl_name
       tbl_name
       db_name.routine_name
//WITH with_option #附加选项,有:
    MAX_QUERIES_PER_HOUR count #每小时最大查询频率
    MAX_UPDATES_PER_HOUR count #每小时最大更新频率
    MAX_CONNECTIONS_PER_HOUR count  #每小时最大连接次数
 一   MAX_USER_CONNECTIONS count #用户最大连接次数

2、取消授权

方式一
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...
方式二
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...

 

三、权限类别

1、管理类

CREATE TEMPORARY TABLES 创建临时表
CREATE USER 创建用户
FILE 可以在服务器读写文件
SUPER 可以管理其他权限
SHOW DATABASES 可以使用show databases查看所有数据库
RELOAD 可以使用刷新(使用flush和Reset)
SHUTDOWN 可以使用shutdown
REPLICATION [SLAVE | CLIENT] 主从同步时,从服务器可以从主服务器上读取binarylog | 用户可以进行主从同步
LOCK TABLES 可以锁表
PROCESS 可以查看当前用户执行sql的情况

2、库级别和表级别类

ALTER 可以使用alter
ALTER ROUTINE 可以使用alter routine
CREATE 创建库和表
CREATE ROUTINE 可以使用create routine
CREATE VIEW 创建视图
SHOW VIEW 可以使用show view查看视图
EXECUTE 可以执行存储过程、函数
GRNAT OPTION 授予其他用户权限
INDEX 可以创建、删除索引
DROP 可以删除表、库、视图

3、数据操作类权限

SELECT 查询
INSERT 插入
UPDATE 更新
DELETE 删除

4、字段级别权限

SELECT(col1,...)
UPDATE(col1,...)
INSERT(col1,...)

另外,all表示所有权限。

四、与用户授权相关的表

mysql数据库中有几个表与用户授权相关

db 库级别权限
host 主机级别权限,已废弃
tables_priv 表级别权限
colomns_priv 列级别的权限
procs_priv 存储过程和存储函数相关的权限
proxies_priv 代理用户权限


 

 

MySQL忘记管理员密码的解决办法:

只需要在启动脚本的start中添加:

--skip-grant-table

但是同时为了安全,这时候是不应该使用网络的,所以还要添加:

--skip-networking

然后启动MySQL,进入使用update修改密码即可。

最后,退出MySQL,并把启动脚本恢复原状就可。

Tag标签: MariaDB   MySQL  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规