前提:
- 本文需要Mysql的root用户操作,如果忘记密码,可以参考:本博主的mysql密码修改博客。
1.查看当前的用户
// 进入mysql服务会有一个mysql的库,查询该库下的user表,查询字段 Host,User .
select Host,User from mysql.user;
查询结果:
mysql> select user,host from mysql.user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| mysqld | % |
| root | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
5 rows in set (0.00 sec)
2. 创建一个用户 user_name
\\ 此处user_name为自定义用户名,by 后面的字符串为自定义密码,可以修改 。
create user user_name identified by '1234';
创建结果:
mysql> create user user_name identified by '1234';
Query OK, 0 rows affected (0.00 sec)
上述结果表示:sql语句运行ok,这里0行生效,不用管 。
再次查询用户表(验证结果):
mysql> select Host,User from mysql.user;
+-----------+---------------+
| Host | User |
+-----------+---------------+
| % | user_name |
| % | mysqld |
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
6 rows in set (0.00 sec)
上述操作成功:
- mysql程序里面操作库,表还是报没有权限错误 。
- 原因是我们创建了用户,还没有对这个用户分配权限。
- 下面我们就为这个用户,配置权限 。
3. 配置权限
// grant 权限设置关键字,privileges on *.* to 允许MySQL用户访问所有数据库 。
grant all privileges on *.* to 'user_name'@'% 'identified by '1234' with grant option;
上述命令解释:
- all: 代表接受所有操作,比如 select,insert,delete.... 。
- *.*: 代表所有库下面的所有表,第一个*可以是数据库名表示指定数据库,第二个*可以是该库下的表名表示指定数据表 。
- %: 代表这个用户允许从任何地方登录;为了安全期间,这个%可以替换为你允许的ip地址 。
- with grant option:是否允许用户继续授权(注意,这个用户能够授权只能是该用户的权限子集 。
- 注意,在授权操作之后,使用flush privileges命令刷新权限 。
4. 收回Mysql 用户的权限
查看当前用户的权限:
show grants;
查看特定用户的权限:
show grants for user_name@%;
使用REVOKE命令回收对用户的授权语法:
REVOKE 权限 ON 数据库对象 FROM 用户;
例如: 回收用户user_name 的所有权限 :
REVOKE all ON *.* FROM user_name@'%';
注意:使用REVOKE撤销全部权限,操作者必须拥有MySQLl数据库的全局CREATE USER权限或UPDATE权限;
5. 刷新mysql用户权限相关表
flush privileges ;
6. 远程连接问题
Mysql 程序远程连接还是连不上,报access deny 错,解决方式;
打开 mysql配置文件,是默认的3306,接着往下面看,发现一个关键地方;
bind-address = 127.0.0.1
原来这里mysql默认绑定了本地ip,不接受其他来源;注释掉,重启mysql 一切OK;
7. 修改用户密码
update mysql.user set password=password('新密码') where User="user_name" and Host="%";
8. 删除用户
delete from mysql.user where User='linjianqing' and Host='%';
9. Mysql 补充操作
如果创建用户时,报:
ERROR 1396 (HY000): Operation CREATE USER failed for 'linjianqing'@'%'
则把语句改成
create user 'user_name'@'%' identified by '123456' ;
创建数据库命令:create database mmall default character set utf8 COLLATE utf8_general_ci;
显示数据库:show databases;
删除数据库:drop database mmall;
给这个数据库赋予用户的权限:grant all privileges on mmall.* to 'jacob'@'%' identified by '123456';
10. 将sql文件导入数据库
进入数据库命令:use 数据库名;
显示表:show tables;
导入:source /developer/mmall.sql;
验证,查看表:select * from mmall_product \G;
\G是格式化的意思