创建mysql用户
Mysql创建用户的语句
mysql> CREATE USER user_account IDENTIFIED BY password;
用户帐号user_account
就是以username@hostname
格式跟在CREATE USER
子句之后。
密码password
在IDENTIFIED BY
子句中指定。password必须是明文。 在将用户帐户保存到用户表之前,MySQL将加密明文密码。
创建用户示例
例如:创建一个名为test
的用户只允许在localhost
登陆、密码为p12345
mysql> CREATE USER test@localhost IDENTIFIED BY 'p13245';
如果用户test
还可以从IP为10.211.55.10
的主机连接到MySQL数据库服务器,使用CREATE USER语句,如下所示:
mysql> CREATE USER test@10.211.55.10 IDENTIFIED BY 'p123456';
要查看用户帐户的权限,请使用SHOW GRANTS语句,如下所示:
mysql> SHOW GRANTS FOR test@localhost;
执行查询语句的结果
mysql> SHOW GRANTS FOR test@localhost;
+------------------------------------------+
| Grants for test@localhost |
+------------------------------------------+
| GRANT USAGE ON *.* TO `test`@`localhost` |
+------------------------------------------+
1 row in set (0.00 sec)
如何连接数据库以及区别
mysql -h [ServerIP] -P [Port(Default 3306)] -u [User] -p [Password]
-h: mysql服务器的IP地址
-P: 大写的P选项表示端口号,端口号默认为3306,可省略
-u: 用户名
-p: 小写的p表示密码,当-p后输入密码时,会直接登陆。当-p后不输入密码时,会要求输入密码,但密码不显示
连接方式
mysql -h 10.211.55.10 -P 3306 -u root -pAbc1234 //显示密码登陆
mysql -h 10.211.55.10 -P 3306 -u root -p //隐藏密码登陆
Enter password:
配置Mysql远程连接
默认情况下、mysql用户只能在本机登陆
方法一、修改数据表
登入数据库后、更改 mysql.user
数据表中的 host
将localhost
改为%
随后刷新权限即可连接。
mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
方法二、授权数据库用户
- 允许某个用户在任何主机可以访问mysql服务器
# 示例说明: GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%'IDENTIFIED BY '密码' WITH GRANT OPTION; FLUSH PRIVILEGES; %表示任何主机
# 使用场景、允许test用户使用密码(123456)在所有主机连接到服务器 mysql>GRANT ALL PRIVILEGES ON *.* TO 'test'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES;
- 只允许指定用户在指定服务器上登陆
# 示例说明 GRANT ALL PRIVILEGES ON *.* TO '用户名'@'指定主机的IP地址'IDENTIFIED BY '密码' WITH GRANT OPTION;
# 使用场景、允许test用户使用密码(123456)在IP为10.211.55.10的主机上连接到服务器 mysql>GRANT ALL PRIVILEGES ON *.* TO 'test'@'10.211.55.10'IDENTIFIED BY '123456' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES;
常见问题
1、在采用法二授权法之后,无法在本地使用本地IP地址登录mysql(如:
mysql -u root -p -h 10.211.66.10
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
上例中localhost是主机名.
解决方法: 这时可以使用:mysql -u root -p
登录
mysql> grant all privileges on *.* to 'root'@'localhost' identified by '123456' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 这只是一个创建远程登录并授权的语句、仅作为记录
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘Fit2cloud!’ WITH GRANT OPTION;