• MySQL之账户管理


    MySQL之账户管理

    账户管理是MySQL用户管理最基本的内容。包括登录,退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。

      其中登录方式非常简单,在这个地址有:http://www.cnblogs.com/kissdodog/p/4154068.html

    1、新建普通用户

    MySQL数据库中,建立用户有3种方式:

    • 使用create user语句来创建新的用户;
    • 直接在mysql.user表中insert 用户;
    • 使用grant 语句来新建用户;

    (1)、方式一:create user

      使用CREATE USER语句创建用户,必须要拥有CREATE USER权限。其格式如下:

    CREATE USER user[IDENTIFIED BY [PASSWORD] 'password'],
    [user[IDENTIFIED BY [PASSWORD] 'password']]...

      其中,user参数表示新建用户的账户,user由用户名(User)和主机名(Host)构成;IDENTIFIED BY关键字用来设置用户的密码;password参数表示用户的密码;如果密码是一个普通的字符串,就不需要使用PASSWORD关键字。可以没有初始密码。

      示例:

    CREATE USER 'admin'@'%' IDENTIFIED BY 'admin'

      执行之后user表会增加一行记录,但权限暂时全部为'N'

    (2)方式二:用INSERT语句新建普通用户

      可以使用INSERT语句直接将用户的信息添加到mysql.user表。但必须拥有mysql.user表的INSERT权限。

      另外,ssl_cipherx509_issuerx509_subject没有值,必须要设置值,否则INSERT语句无法执行。

      示例:

    INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) VALUES('%','newuser1',PASSWORD('123456'),'','','')

      执行INSERT之后,需要使用一下命令来刷新权限

    FLUSH PRIVILEGES

      命令来使用户生效。

    (3)、用GRANT语句来新建普通用户

      GRANT来创建新的用户时,能够在创建用户时为用户授权。但需要拥有GRANT权限。

      语法如下:

    GRANT priv_type ON database.table

    TO user[IDENTIFIED BY [PASSWORD] 'password']

    [,user [IDENTIFIED BY [PASSWORD] 'password']...]

    • priv_type:参数表示新yoghurt的权限;
    • databse.table:参数表示新用户的权限范围;
    • user:参数新用户的账户,由用户名和主机构成;
    • IDENTIFIED BY关键字用来设置密码;
    • password:新用户密码;

      GRANT语句可以同时创建多个用户。

    GRANT SELECT ON *.* TO netUser@'%'

      *.*db.*的区别在于。*.*对所有数据库生效,所以user表的SELECT会变为Y。而db.*user表为'N',更改的是Db表。

    2、删除普通用户

    (1)、DROP USER语句删除普通用户

    需要拥有DROP USER权限。语法如下:

    DROP USER user[,user]...

    user是需要删除的用户,由用户名(User)和主机名(Host)构成。

    DROP USER 'newuser1'@'%'

    (2)、DELETE语句删除普通用户

      可以使用DELETE语句直接将用户的信息从mysql.user表中删除。但必须拥有对mysql.user表的DELETE权限。

    DELETE FROM mysql.user WHERE Host = '%' AND User = 'admin'

      删除完成后,一样要FLUSH PRIVILEGES才生效。

    3、修改密码

    (1)、使用mysqladmin命令来修改root用户的密码

      语法:

    mysqladmin -u -username -p password "new_password"

      新密码(new_password)必须用括号括起来,单引号会报错。

      示例:

      (注:这个待验证,我怎么执行都不成功!)

    (2)、修改user表

    UPDATE user表的passwor字段的值,也可以达到修改密码的目的;

    UPDATE user SET Password = PASSWORD('123') WHERE USER = 'myuser'

      FLUSH PRIVILEGES后生效。

    (3)、使用SET语句来修改密码

      使用root用户登录到MySQL服务器后,可以使用SET语句来修改密码:

      修改自己的密码,不需要用户名

    SET PASSWORD = PASSWORD("123");

      修改其他用户密码:

    SET PASSWORD FOR 'myuser'@'%'=PASSWORD("123456")

      FOR 用户名@主机名

    (4)、GRANT语句来修改普通用户的密码

      使用GRANT语句修改普通用户的密码,必须拥有GRANT权限。

    GRANT priv_type ON database.table TO user [IDENTIFIED BY [PASSWORD] 'password']

      示例:

    GRANT SELECT ON *.* TO 'test3'@'%' IDENTIFIED BY '123'

    4、忘记密码的解决方案

      如果root用户密码丢失了,会给用户造成很大的麻烦。但是,可以通过某种特殊方法登录到root用户下,然后修改密码。

      (1)、使用--skip-grant-tables选项启动MySQL服务

      该选项将使MySQL服务器停止权限判断,任何用户都能够访问数据库。

      在Windows操作系统下,使用mysqlidmysqlid-nt来启动MySQL服务。

      mysqld命令:

      mysqld --skip-grant-tables

      mysqld-nt命令:

      mysqld-nt --skip-grant-tables

      net start mysql命令:

      net start mysql --skip-grant-tables

      (2)、登录root用户,并且设置新密码

      mysql -u root

      必须使用UPDATE语句更新mysql数据库下的user表,而不能使用SET语句,因为--skip-grant-tables不能使用SET语句。

      修改完密码以后,FLUSH PRIVILEGES语句加载权限表,新密码即生效。

  • 相关阅读:
    URAL 1998 The old Padawan 二分
    URAL 1997 Those are not the droids you're looking for 二分图最大匹配
    URAL 1995 Illegal spices 贪心构造
    URAL 1993 This cheeseburger you don't need 模拟题
    URAL 1992 CVS
    URAL 1991 The battle near the swamp 水题
    Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力
    Codeforces Beta Round #7 D. Palindrome Degree hash
    Codeforces Beta Round #7 C. Line Exgcd
    Codeforces Beta Round #7 B. Memory Manager 模拟题
  • 原文地址:https://www.cnblogs.com/Prozhu/p/6078846.html
Copyright © 2020-2023  润新知