zoukankan      html  css  js  c++  java
  • 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语句加载权限表,新密码即生效。

  • 相关阅读:
    中文转拼音 (utf8版,gbk转utf8也可用)
    会不会死循环
    图片放大缩小的zoom.js
    Getting unknown property: commonmodelsTeacher::auth_Key
    Yii-admin 权限菜单配置
    wordpress 后台富文本编辑器,添加图片发现无法左对齐,样式出现混乱
    windows 命令
    Yii2 获取URL的一些方法
    PHP 直接使用html输出excel
    json JSON_UNESCAPED_UNICODE 防止中文乱码
  • 原文地址:https://www.cnblogs.com/Prozhu/p/6078846.html
Copyright © 2011-2022 走看看