MySQL用户创建、授权和修改密码

    xiaoxiao2021-03-25  171

    1.创建用户

    mysql> CREATE USER 'myuser'@'host' IDENTIFIED BY 'mypasswd';

    说明:

    myuser:创建的用户名

    host:指定该用户在哪个主机上可以登陆。如果是本地用户可用localhost,如果允许该用户从任意远程主机登陆,可以使用通配符%。

    mypasswd:用户的登录密码,允许密码为空,如果为空则该用户可以不需要密码登陆服务器。

    举例:

    mysql> CREATE USER 'frank'@'localhost' IDENTIFIED BY '1q2w3e';

    mysql> CREATE USER 'frank'@'192.168.1.100' IDENDIFIED BY '1q2w3e';

    mysql> CREATE USER 'frank'@'%' IDENTIFIED BY '1q2w3e';

    2.删除用户

    mysql> DROP USER 'myuser'@'host';

    3.授权用户从远程访问数据库

    如果手里的帐号不允许从远程登陆,只能在localhost登录,现在想要授权该用户远程访问mysql。可以通过本地以root登录mysql以后,进行修改。更改数据库“mysql"里的”user"表里的“host”项,将“localhost”改称“%”。

    1)改表法:

    # mysql -uroot

    mysql> use mysql;

    mysql> update user set host = '%' where user = 'root';

    mysql> select host, user from user;

    mysql> flush privileges; 

    2)授权法:

    # mysql -uroot

    mysql> GRANT ALL ON *.* TO 'frank'@'%' IDENTIFIED BY '1q2w3e';

    mysql> use mysql;

    mysql> select host, user from user;

    mysql> flush privileges; 

    如果想指定用户frank从ip为192.168.1.100的主机连接到mysql服务器,并使用1q2w3e作为密码,授予所有权限ALL:

    mysql> GRANT ALL ON *.* TO 'frank'@'192.168.1.100' IDENTIFIED BY '1q2w3e';

    mysql> flush privileges; 

    如果想指定用户frank从ip为192.168.1.100的主机连接到mysql服务器,并使用1q2w3e作为密码:

    mysql> GRANT ALL ON *.* TO 'frank'@'192.168.1.100' IDENTIFIED BY '1q2w3e';

    mysql> flush privileges; 

    4.用户授权

    mysql> GRANT privileges ON dbName.tableName TO 'myuser'@'host';

    mysql> flush privileges; 

    说明:

    privileges:用户的操作权限,如:SELECT, INSERT, UPDATE 等。如果要授予所的权限则使用ALL。

    dbName.tableName:数据库名.表名。如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,例如*.*。

    'myuser'@'host':授权用户myuser并指定host,授权本地登录host为localhost,授权用户远程登录host可以指定IP,或者使用通配符%,允许任意远程主机登录。

    举例:

    mysql> GRANT SELECT, INSERT ON testdb.table01 TO 'frank'@'%';

    mysql> GRANT ALL ON *.* TO 'frank'@'%';

    mysql> flush privileges; 

    注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令: 

    GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; 

    5.撤销用户权限

    mysql> REVOKE SELECT ON dbName.tableName FROM 'myuser'@'host'; //撤销SELECT权限

    mysql> REVOKE SELECT ON dbName.tableName FROM 'myuser'@'%'; //撤销SELECT权限

    mysql> flush privileges; 

    6.查看用户权限

    mysql> SHOW GRANTS FOR 'myuser'@'%';

    mysql> SHOW GRANTS FOR 'myuser'@'localhost';

    查看自己的权限

    mysql> SHOW GRANTS;

    权限有很多种:

    ALL PRIVILEGES 代表所有权限。

    USAGE 官方解释为‘无权限’的同义词。经过测试,无权限也能进行基本的读写操作。

    7.设置与更改用户密码

    修改密码有多种方法

    # mysql -uroot

    如果是设置当前登陆用户自己的密码用:

    mysql> SET PASSWORD = PASSWORD("mypasswd"); //该方式可以设置空密码

    mysql> flush privileges; 

    设置其他用户的密码用:

    mysql> SET PASSWORD FOR 'myuser'@'host' = PASSWORD('mypasswd'); //该方式可以设置空密码

    mysql> flush privileges; 

    修改frank远程访问密码举例:

    mysql> SET PASSWORD FOR 'frank'@'%' = PASSWORD("1q2w3e");  //该方式可以设置空密码

    mysql> flush privileges; 

    通过grant设置密码

    mysql> GRANT ALL on *.* to 'myuser'@'%' identified by "mypassword"; 

    mysql> flush privileges; 

    设置root本地登录密码举例:

    # mysql -uroot

    mysql> GRANT ALL on *.* to 'root'@'localhost' identified by "1q2w3e"; //该方式不能设置空密码

    mysql> flush privileges; 

    也可以在shell环境下用mysqladmin程序来设置root密码(如果原来root没有设置密码)

    # mysqladmin -u root password "mypasswd"

    # mysqladmin -u root password "mypasswd"

    转载请注明原文地址: https://ju.6miu.com/read-1533.html

    最新回复(0)