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"