MariaDB/MySQL之用户管理及忘记数据管理员密码解决办法
在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,并把启动脚本恢复原状就可。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。