zoukankan      html  css  js  c++  java
  • MySQL用户管理

    用户管理主要有以下作用: 
    1. 可以限制用户访问哪些库、哪些表 
    2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、ALTER等操作 
    3. 可以限制用户登录的IP或域名 
    4. 可以限制用户自己的权限是否可以授权给别的用户

    一.创建MySQL用户:

    创建MySQL用户有三种方法:

    1.通过CREATE USER命令进行创建用户

    语法:CREATE USER 'username'@'host' [IDENTIFIED BY 'PASSWORD'] 其中密码是可选项;

    mysql> create user www@'localhost' identified by '123456';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> create user www@'%' identified by '123456';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> create user www@'192.168.1.10';
    Query OK, 0 rows affected (0.00 sec)
    
    说明:该方法创建出来的用户只有连接数据库的权限,需要后续继续授权;
    

    2.通过 GRANT 命令创建用户(常用方法)
    这种方法进行创建的用户,当数据库存在用户的时候GRANT会对用户进行授权,但当数据库不存在该用户的时候,就会创建相应的用户并进行授权.

    语法:GRANT <权限> ON <数据库.表名> TO <用户名@登录主机> IDENTIFIED BY '密码'[WITH GRANT OPTION];

    说明:
    priv代表权限 select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限
    ON:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,写‘*.*’表示所有数据库所有表。
    TO:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。
    IDENTIFIED BY:指定用户的登录密码.
    WITH GRANT OPTION:表示允许用户将自己的权限授权给其它用户,为可选项.

    1.>创建用户www,并分配对所有数据库和表有所有的权限,允许所有主机登录,设定口令为123456.

    mysql>GRANT ALL PRIVILEGES ON *.* TO www@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
    

    2.>给主机为192.168.10.1的用户www分配可对数据库testdb所有表进行所有操作的权限,并设定口令为123456.

    mysql>GRANT ALL PRIVILEGES ON testdb.* TO www@'192.168.10.1' IDENTIFIED BY '123456';
    

    3.>创建只读账户.

    grant select on pms.* to pmsbi@'%'  IDENTIFIED BY 's86j3z47995';

    3.直接向mysql.user表插入记录(该方法个人很少用) 

    mysql>INSERT INTO mysql.user(Host,User,Password) VALUES('%','www',password('123456'));
    mysql>flush privileges;
    

    二.刷新权限
    对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库。

    mysql> flush privileges;
    

    三.查看用户权限

    查看mysql当前登录用户:
    mysql> select user();
    查看某MySQL用户的使用权限:
    show grants for   dbuser;
    如:show grants for root@localhost;
    
    查看创建数据库时用到那些参数.
    show create database dbname;
    
    查看创建表时用到的那些参数.
    show create table 表名;
    

    四.回收用户权限

    mysql> revoke create on *.* from 'www@localhost';
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    

    五.删除用户

    mysql>Delete FROM user Where User='www' and Host='localhost';
    mysql>flush privileges;
    
    #删除账户及权限
    mysql>drop user www@localhost;
    

    六.用户重命名

    mysql> rename user 'www'@'localhost' to 'user1'@'localhost';
    Query OK, 0 rows affected (0.00 sec)
    

    七.修改用户密码

    1.用set password命令

    语法:set password for '用户名'@'登录地址' =password(‘密码’)

    mysql> set password for 'www'@'localhost' = password('123');  
    Query OK, 0 rows affected (0.00 sec)
    

    2.更新mysql.user表

    mysql> update user set authentication_string=password('123456') where user='www';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    

    3.用mysqladmin命令

    语法:mysqladmin -u用户名 -p旧的密码 password 新密码

    mysql> mysqladmin -uroot -p123456 password 1234abcd
    

    八.忘记密码  

    1.添加登录跳过权限检查配置
    修改my.cnf,在mysqld配置节点添加skip-grant-tables配置

    [mysqld]
    skip-grant-tables

    2> 重新启动mysql服务

    #service mysqld restart

    3> 修改密码

    此时在终端用mysql命令登录时不需要用户密码,然后按照修改密码的第一种方式将密码修改即可。

    注意:mysql库的user表,5.7以下版本密码字段为password,5.7以上版本密码字段为authentication_string

    4> 还原登录权限跳过检查配置

    将my.cnf中mysqld节点的skip-grant-tables配置删除,然后重新启动服务即可。

    参考文档:http://www.toxingwang.com/database/mysql/1468.html

           http://blog.csdn.net/xyang81/article/details/51822252  

      

      

  • 相关阅读:
    5.MFC基础(五)视图、运行时类信息、动态创建
    4.MFC基础(四)菜单、工具栏、状态栏
    OpenCV Python 4.0安装
    windows批量导出文件名到txt
    *&p理解
    VS调试快捷键配置更改
    数组类的创建(下)
    数组类的创建(上)
    operator用法:隐式类型转换
    C++单例模式
  • 原文地址:https://www.cnblogs.com/saneri/p/6657388.html
Copyright © 2011-2022 走看看