mysql-创建用户和授权

发布时间:2018-06-14 20:33:31编辑:Run阅读(4662)

    mysql权限管理

    我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作。包括select、update、delete、update、grant等操作.

    如何创建用户和密码

    给当前的用户授权

    移除当前用户的权限


    如果你想创建一个新的用户,则需要以下操作

    1 进入到mysql数据库下

    mysql> use mysql;  # 选择数据库

    Reading table information for completion of table and column names

    You can turn off this feature to get a quicker startup with -A


    Database changed


    2 对新用户增删改

    (1) 创建用户

    指定ip:192.168.11.88 的 用户:zhangsan 密码:123 登录

    mysql> create user 'zhangsan'@'192.168.11.88' identified by '123';

    Query OK, 0 rows affected (0.01 sec)


    指定ip:192.168.11.% (%网段)的用户:zhangsan 密码:123 登录

    mysql> create user 'zhangsan'@'192.168.11.%' identified by '123';

    Query OK, 0 rows affected (0.00 sec)


    指定任意ip的用户:zhangsan 密码:123 登录

    mysql> create user 'zhangsan'@'%' identified by '123';

    Query OK, 0 rows affected (0.00 sec)


    (2) 删除用户

    查看当前数据库的所有主机,用户

    mysql> select host,user from user;

    +---------------+-----------+

    | host          | user      |

    +---------------+-----------+

    | %             | root      |

    | %             | tao123    |

    | %             | zhangsan  |

    | 192.168.11.%  | zhangsan  |

    | 192.168.11.88 | zhangsan  |

    | localhost     | mysql.sys |

    | localhost     | root      |

    +---------------+-----------+

    7 rows in set (0.00 sec)


    删除用户

    mysql> drop user 'zhangsan'@'%';  # 删除zhangsan用户从任意地址登录

    Query OK, 0 rows affected (0.00 sec)


    mysql> drop user 'zhangsan'@'192.168.11.%';  # 删除zhangsan用户从192.168.11.% 网段登录

    Query OK, 0 rows affected (0.00 sec)


    mysql> select host,user from user;  # 再次查询,已经删除

    +---------------+-----------+

    | host          | user      |

    +---------------+-----------+

    | %             | root      |

    | %             | tao123    |

    | 192.168.11.88 | zhangsan  |

    | localhost     | mysql.sys |

    | localhost     | root      |

    +---------------+-----------+

    5 rows in set (0.00 sec)


    (3)修改用户

    mysql> rename user 'zhangsan'@'192.168.11.88' to 'lisi'@'192.168.11.88';  # to前面老的,后面为新的

    Query OK, 0 rows affected (0.00 sec)


    mysql> select host,user from user;  # 已经更新

    +---------------+-----------+

    | host          | user      |

    +---------------+-----------+

    | %             | root      |

    | %             | tao123    |

    | 192.168.11.88 | lisi      |

    | localhost     | mysql.sys |

    | localhost     | root      |

    +---------------+-----------+

    5 rows in set (0.00 sec)


    (4)修改密码

    mysql> set password for 'lisi'@'192.168.11.88'=password('321');

    Query OK, 0 rows affected, 1 warning (0.00 sec)



    3 对当前的用户授权管理

    查看权限

    mysql> show grants for 'lisi'@'192.168.11.88';

    +----------------------------------------------+

    | Grants for lisi@192.168.11.88                |

    +----------------------------------------------+

    | GRANT USAGE ON *.* TO 'lisi'@'192.168.11.88' |

    +----------------------------------------------+

    1 row in set (0.00 sec)


    授权 lisi用户仅对db1.author表有查询、插入和更新的操作

    mysql> grant select,insert,update on db1.author to 'lisi'@'192.168.11.88';

    Query OK, 0 rows affected (0.00 sec)


    验证,使用lisi账号登陆,分别进行查询,插入,更新操作

    这里使用第三方工具连接测试,使用的是Navicat,其它的也行

    blob.png


    连接成功后,只显示db1数据库下的author表内容

    原始数据就4条,利用工具---进行---增,改,查操作,步骤不演示,直接上结果

    blob.png


    插入数据,更新数据,查询数据成功

    blob.png


    删除数据失败,因为没有给删除权限

    blob.png



    表示:有所有的权限,除了grant这个命令,这个命令是root才有的。lisi用户对db1下的author表有任意操作

    mysql> grant all privileges on db1.author to 'lisi'@'%';

    Query OK, 0 rows affected, 1 warning (0.00 sec)


    由于之前设置了lisi账号的权限,需要删除,不然默认会以权限小的去执行

    mysql> drop user 'lisi'@'192.168.11.88';  # 删除之前创建的

    Query OK, 0 rows affected (0.00 sec)


    mysql> flush privileges;  # 刷新数据库权限

    Query OK, 0 rows affected (0.01 sec)


    验证:删除一行数据,删除成功

    blob.png


    lisi用户对db1数据库中的文件执行任何操作,db1数据库下的所有表都有权限

    mysql> grant all privileges  on db1.* to "lisi"@'%';

    Query OK, 0 rows affected (0.00 sec)

    blob.png



    lisi用户对所有数据库中文件有任何操作(相当于root权限,不建议使用)

    注意:对同一个账号赋予权限的时候,一定要取消之前给的权限,不然会有问题

    mysql> revoke ALL PRIVILEGES ON `db1`.* from 'lisi'@'%';  #移除之前lisi对db1数据库的所有权限

    Query OK, 0 rows affected (0.00 sec)


    mysql> show grants for 'lisi'@'%';  # 查看lisi用户当前权限,GRANT USAGE ON *.* TO 'lisi'@'%'为默认权限

    +----------------------------------+

    | Grants for lisi@%                |

    +----------------------------------+

    | GRANT USAGE ON *.* TO 'lisi'@'%' |  <--  为默认权限

    +----------------------------------+

    1 row in set (0.00 sec)


    mysql> grant all privileges  on *.*  to "lisi"@'%';  # 赋予lisi所有数据库权限(相当于root权限)

    Query OK, 0 rows affected (0.00 sec)


    重新连接Navicat,查看

    已经变成root权限了(不推荐使用,很不安全)

    blob.png


    取消权限

    取消来自远程服务器的lisi用户所有数据库的权限

    mysql> show grants for 'lisi'@'%';  # 查看当前lisi用户的权限

    +-------------------------------------------+

    | Grants for lisi@%                         |

    +-------------------------------------------+

    | GRANT ALL PRIVILEGES ON *.* TO 'lisi'@'%' |

    +-------------------------------------------+

    1 row in set (0.00 sec)


    mysql> revoke ALL PRIVILEGES ON *.* from 'lisi'@'%';  # 取消lisi用户所有数据的权限

    Query OK, 0 rows affected (0.00 sec)


    重新连接Navicat查看

    已经取消所有数据库的权限了

    blob.png


    MySql备份命令行操作

    # 备份:数据表结构+数据
    mysqdump -u root db1 > db1.sql -p
    
    
    # 备份:数据表结构
    mysqdump -u root -d db1 > db1.sql -p
    
    #导入现有的数据到某个数据库
    #1.先创建一个新的数据库
    create database db10;
    # 2.将已有的数据库文件导入到db10数据库中
    mysqdump -u root -d db10 < db1.sql -p


关键字

上一篇: mysql-多表查询

下一篇: mysql-视图