`
chenzehe
  • 浏览: 538176 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySql 账号管理

 
阅读更多

1、创建账号,有两种方式,一种为使用GRANT,一种直接操作权限表,推荐使用第一种,操作简单而且不容易出错。在MySql命令行中查看GRANT帮助即可看到GRANT的用法:

mysql> ? GRANT
Name: 'GRANT'
Description:
Syntax:
GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user [IDENTIFIED BY [PASSWORD] 'password']
        [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
    [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
    [WITH with_option ...]

object_type:
    TABLE
  | FUNCTION
  | PROCEDURE

priv_level:
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name

ssl_option:
    SSL
  | X509
  | CIPHER 'cipher'
  | ISSUER 'issuer'
  | SUBJECT 'subject'

with_option:
    GRANT OPTION
  | MAX_QUERIES_PER_HOUR count
  | MAX_UPDATES_PER_HOUR count
  | MAX_CONNECTIONS_PER_HOUR count
  | MAX_USER_CONNECTIONS count

 

例1:创建用户zl,权限为可以在所有数据库上执行所有操作,只能从本地连接:

GRANT All PRIVILEGES ON *.* TO zl@localhost;

例2:在上面基础上增加对zl的GRANT权限

GRANT All PRIVILEGES ON *.* TO zl@localhost WITH GRANT OPTION;

例3:在上面基础上设置zl密码为123456

GRANT All PRIVILEGES ON *.* TO zl@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;

例4:创建z2用户,可以从任何IP进行连接,权限为对test1数据库里所有表进行SELECT、UPDATE、INSERT、DELETE操作,初始密码为123456,使用GRANT实现如下:

GRANT SELECT,INSERT,UPDATE,DELETE ON test1.* TO 'z2'@'%' IDENTIFIED BY '123456'

直接操作权限表实现如下:

INSERT INTO db(host,db,user,select_priv,insert_priv,update_priv,delete_priv) 
VALUES('%','test1','z2','Y','Y','Y','Y')
 

 

该用户在user表中的权限都为N,db表中的权限为Y,如下:

mysql> SELECT * FROM user WHERE user ='z2' AND HOST ='%' \G;
*************************** 1. row ***************************
                 Host: %
                 User: z2
             Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
          Select_priv: N
          Insert_priv: N
          Update_priv: N
          Delete_priv: N
          ......

mysql> SELECT * FROM db WHERE user ='z2' AND HOST ='%' \G;             
*************************** 1. row ***************************
                 Host: %
                   Db: test1
                 User: z2
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          ......
 

MySQL是通过user表的host字段来控制IP连接限制的,host可以有如下类型赋值:

    Host可以是主机名或者是IP,或"localhost"指本地主机

    可以在Host列使用通配符字符"%"或"_"

    Host值"%"匹配任何主机名,空Host等价于%,但是不包括本地服务器localhost,如果要使用localhost权限,则必须单独配置。

    如果有多个匹配,则按下面规则进行:

    服务器启动时读入user表进行排序,先以最具体的值进行排序,主机名和IP是最具体的,而%是最不具体的。

    当用户进行连接时,以排序的先后顺序进行浏览记录,服务器使用第一条与客户端匹配的记录进行连接。

 

例5:授予SUPER、PROCESS、FILE权限给z3@%,这几个都是管理权限,不能指定具体某个数据库,只能用*.*

GRANT SUPER,PROCESS,FILE ON *.* TO 'z3'@'%';

 

例6:只授予登录权限给z4@localhost,USAGE只能登录数据库,不能进行任何操作

GRANT USAGE ON *.* TO 'z4'@'localhost'

GRANT权限只能用于登录数据库,不能执行任何操作。

 

查看权限

(1)  SHOW GRANTS FOR user@host;

(2)  按照user->db->tables_priv->columns_priv的顺序查看用户权限

(3)  MySQL5以后,可以使用新增的数据库information_schema数据库进行查看:

USE information_schema;
SELECT * FROM SCHEMA_PRIVILEGES WHERE GRANTEE = "'z2'@'%'";

 

更改权限

      和账号创建一样,更改权限也有两种方法,一种是使用GRANT(新增)和REVOKE(回收)方法,另一种是直接操作数据库方法。

      GRANT权限在执行的时候,如果权限表中不存在目标账号,则创建,如果存在,则执行权限的新增操作,GRANT不会执行减的操作。

(0) 目前数据库在存在用户'z2'@'%',执行GRANT USAGE ON *.* TO 'z2'@'localhost'; 语句会新增用户,而不是改变原先。用户充许连接的域

(1) 目前'z2'@'localhost'只有登录权限,如下:

mysql> SHOW GRANTS FOR 'z2'@'localhost';      
+----------------------------------------+
| Grants for z2@localhost                |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'z2'@'localhost' |
+----------------------------------------+
1 row in set (0.00 sec)

 (2) 赋予'z2'@'localhost'所有数据库上的所有表的SELECT权限:

GRANT SELECT ON *.* TO 'z2'@'localhost';

mysql> SHOW GRANTS FOR 'z2'@'localhost';
+-----------------------------------------+
| Grants for z2@localhost                 |
+-----------------------------------------+
| GRANT SELECT ON *.* TO 'z2'@'localhost' |
+-----------------------------------------+
1 row in set (0.00 sec)

 (3) 给'z2'@'localhost'所有数据库上的INSERT权限:

GRANT INSERT ON *.* TO 'z2'@'localhost';

mysql> SHOW GRANTS FOR 'z2'@'localhost';
+-------------------------------------------------+
| Grants for z2@localhost                         |
+-------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'z2'@'localhost' |
+-------------------------------------------------+
1 row in set (0.00 sec)

 

 

(4) 使用REVOKE收回'z2'@'localhost'在所有数据库上的INSERT权限:

mysql> REVOKE INSERT ON *.* FROM  'z2'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'z2'@'localhost';
+-----------------------------------------+
| Grants for z2@localhost                 |
+-----------------------------------------+
| GRANT SELECT ON *.* TO 'z2'@'localhost' |
+-----------------------------------------+
1 row in set (0.00 sec)

  USAGE权限不能被REVOKE收回,也就是说,REVOKE不能删除用户。

 

更改密码

(1) 使用mysqladmin命令

mysqladmin -u user_name -p user_password -h host_name password "new_password"

如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin, 那么这种方法就是无效的。 而且mysqladmin无法把密码清空。

(2) 执行SET PASSWORD语句,如下面语句将'z2'@'%'的密码设置为111111:

SET PASSWORD FOR 'z2'@'%' = PASSWORD('111111');

 如果是修改自己的密码,则FOR可以省略。

(3) 使用GRANT USAGE语句来指定某个用户的密码,而不影响当前用户的权限,如下面语句将'z2'@'%'的密码设置为111111:

GRANT USAGE ON *.* TO 'z2'@'%' IDENTIFIED BY '111111';

 GRANT只能增加权限而不会收回权限,而USAGE权限只是登录权限,所以这里使用GRANT USAGE不会影响到用户原先的权限。

(4) 直接修改mysql数据库的user表,但是要使用PASSWORD()函数,上面两种mysqladmin和GRANT自动加上PASSWORD()函数。

UPDATE user SET Password=PASSWORD('123456') WHERE User='z2' AND Host='localhost';
 

删除用户账号

(1) 使用 DROP USER 语句

DROP USER 'z2'@'localhost';

(2) 删除user表记录

 

 

 

 

 

分享到:
评论

相关推荐

    mysql账号管理与引擎

    mysql账号管理与引擎

    php mysql 后台账号管理系统

    在IT行业中,PHP和MySQL是两个非常重要的技术,它们经常被结合使用来构建后台管理系统,尤其是账号管理系统。本文将深入探讨这两个技术如何协同工作,以及如何实现简单的账号管理功能。 PHP是一种广泛使用的开源...

    Mysql账户管理原理与实现方法详解

    MySQL账户管理是数据库系统中至关重要的一环,它涉及到数据库安全性和操作便捷性。在实际的生产环境中,直接使用root账户进行数据库操作是非常不推荐的,因为root账户具有最高权限,一旦出现问题,可能会对整个...

    以普通权限运行MySQL的操作说明

    2. **验证运行用户**:再次通过任务管理器检查MySQL服务的运行账户,确保已改为“mysqluser”。 3. **测试数据库功能**:运行一些依赖于MySQL的Web应用程序,如Discuz、Phpwind等,以确保它们仍然可以正常工作。 ##...

    mysql 账号权限管理命令

    MySQL 账号 权限, 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建

    php+mysql图书管理系统.zip

    bms和mysql文件夹里面全部都是MySQL数据库文件不要随意改名 将bms和mysql整个文件夹和ibdata1复制粘贴到xampp安装路径下的mysql文件夹里的data文件夹里面, 如我的路径即是D:\xampp\mysql\data\bms,接着打开XMAPP...

    5. Mysql账户管理(权限)、主从配置

    本篇文章将深入探讨“Mysql账户管理(权限)”和“主从配置”这两个关键知识点。 首先,我们来看MySQL账户管理与权限部分。在MySQL中,账户管理涉及用户创建、删除、修改以及权限的授予和回收。每个用户都有特定的...

    MySQL管理密码用户授权实践

    管理MySQL数据库包括管理用户账户和相应的权限,确保数据的安全和有效访问。本文将详细讨论如何进行MySQL管理密码的恢复与设置,以及如何进行用户授权和撤销。 1. MySQL密码恢复及设置 MySQL管理密码的恢复和设置...

    银行管理系统qt+mysql

    MySql 1、管理人员信息表(username password(status)) 2、客户信息管理 3、客户存款信息表 4、流水信息表 1、登录界面(不允许重复登录) username password 2、主要功能 1)开户 创建新的客户账号 2)存款 ...

    MySQL 系统管理员指南

    2. **用户管理与权限**:MySQL通过用户账户和权限系统来控制谁可以访问哪些数据库和表。创建、修改和删除用户,以及分配适当的SELECT、INSERT、UPDATE、DELETE和GRANT等权限是管理员的日常工作。 3. **数据库与表...

    Java + MySQL银行管理系统

    《Java + MySQL构建银行管理系统详解》 在信息技术日益发达的今天,银行管理系统已经成为金融机构不可或缺的一部分。本项目以“Java + MySQL”为技术栈,构建了一个功能完善的银行管理系统,旨在实现银行的基本业务...

    银行管理系统(java+mysql8)

    【银行管理系统(java+mysql8)】是一款基于Java编程语言和MySQL8数据库的软件应用,主要功能涵盖了银行日常运营中的核心服务,如查询余额、转账、存款、取款、修改密码、开户以及自动生成密码和管理银行账号等。...

    MySQLManager管理工具

    7. 用户权限管理:MySQLManager还可以帮助管理用户账户和权限。可以创建新用户,分配特定数据库的访问权限,或者调整已有用户的权限设置。 8. 日志和错误报告:在遇到问题时,MySQLManager的错误报告功能可以帮助...

    图书管理系统(java+mysql)

    【图书管理系统(java+mysql)】是一个基于Java编程语言和MySQL数据库技术实现的图书管理软件。在本系统中,Java作为后端开发语言,用于处理业务逻辑和与数据库的交互,而MySQL则是用来存储和管理图书数据的关系型...

    破解Mysql账号密码的方法

    在MySQL数据库管理中,有时...总结,破解MySQL账号密码是一个涉及停止服务、启动特殊模式、更新密码和重启服务的过程。了解并掌握这些步骤,可以帮助你在忘记密码时迅速解决问题,但也要注意密码安全和系统的稳定性。

    新闻管理系统+mysql

    【新闻管理系统+MySQL】是一个基于Java技术和MySQL数据库构建的简单新闻管理平台。在这个系统中,开发者利用Java的技术栈实现了新闻的增加、删除等基本操作,同时结合MySQL数据库进行数据存储和检索,为用户提供了一...

    mysqlyou -mysql客户端管理工具

    在用户和权限管理方面,`mysqlyou`可能允许用户创建、删除和修改MySQL用户,设置账户的访问权限。用户可以指定哪些用户可以连接到特定的数据库,以及他们对这些数据库的操作权限,如只读、读写或者完全控制。 对于...

    PHP+Mysql开发图书管理系统源码+数据库,具有管理员和学生账号,管理员可以上架新增图书,学生可以借阅和归还图书,含项目报告

    本系统基于PHP编程语言与MySQL数据库进行开发,提供管理员和学生两种不同权限的账户功能,实现了图书的上架、新增、借阅和归还等功能,同时包含详细的项目报告,为开发者提供了清晰的开发思路。 首先,PHP是一种...

Global site tag (gtag.js) - Google Analytics