一、添加用户
新增用户会有两种方式的,一种是使用create命令,另一种是直接回使用grant 命令
1、create user 名字@登陆地址 identified by "密码";
2、grant select,update(权限) on 数据库名.表名 to 用户@登录地址 identified by '密码';
3、insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
- 登陆地址host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符
%
- password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
- 在grant 中 privileges表示用户的操作权限,如
SELECT
,INSERT
,UPDATE
等,如果要授予所的权限则使用ALL
- tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用
*
表示,如*.*
。
二、授权和取消授权
原本grant就是用来授权的,只是当找不到授权用户的时候会重新创建一个用户,这个时候就需要注意将密码 加上。
使用grant授权实质是在mysql数据库的user表中增加一列,收回权限实质是从表中删除一列。所以授权也可以替换为删除表数据来代替,授权收权实质是操作mysql的user表。查看mysql.user表的结构:(windows与linux不同的是password列名改为authentication_string)
1、grant privileges on 数据库名.表名 to '用户名'@'登录地址' identified by '密码';
2、grant select,insert on 数据库名.表名 to '用户名'@'登录地址' identified by '密码';
3、grant all on *.* to '用户名'@'登录地址' identified by '密码';
4、grant all on 数据库名.* to '用户名'@'登录地址' identified by '密码';
--让用户 拥有授权 权限
5、grant privilege on 数据库名.* to '用户名'@'登录地址' with grant option;
--取消授权
6、revoke all on *.* from '用户名'@'登录地址';
三、查看用户信息
当然有查看全部的用户信息和单个的用户信息
1、select distinct concat('User: ''',user,'''@''',host,''';') as query from mysql.user;
2、select * from mysql.user where user='用户名';
3、show grants for '用户名'@'登录地址(%表示远程登录)';
--查看当前用户的权限
4、show grants;
--查看用户表的结构
5、show mysql.user
四、修改用户和删除用户
--修改用户密码
1、set password for 'username'@'host' = password('newpassword');
--当前用户修改自己密码
2、set password = passw ("newpassword");
--使用update 更新用户
3、update user set password=password('123') where user='root' and host='localhost';
flush privileges;
--删除用户
4、delete from mysql.user where user='root' and host='%';
flush privileges;
五、有关远程登录mysql的问题
我们会发现其实数据库是分为本地的和远程的,本地的数据库即为在本地服务器安装的例如安装的mysql,sql Server等,远程的当然是部署在远程服务器上的。
当给创建用户账号的时候,如果create user 用户@登陆地址 identified by "密码"; 登录地址指定是host,或者某个地址就是表示该用户在局域网或互联网中以IP方式访问了。但是这种情况有可能在其他服务器登不上,这时候就需要登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"。
--先选择mysql数据库的user表
1、use mysql;
--再修改登录的ip
2、update user set host = '%' where user = '用户名';
当然你可以选择用授权的方式来给需要的用户从任何主机连接到mysql服务器:
-- 可以从任何地方登录数据库
1、grant all privilege on *.* to '用户'@'%' identified by '密码' with grant option;
2、flush privilege;
--允许用户从ip为192.168.1.1的主机连接到mysql服务器,并使用mypassword作为密码
3、grant all privilege on *.* to '用户'@'192.168.1.1' identified by '密码' with grant option;
4、flush privilege;
--用户从ip为192.168.1.1的主机连接到mysql服务器的test数据库,并使用mypassword作为密码
5、grant all privilege on test.* to '用户'@'192.168.1.1' identified by '密码' with grant option;
6、flush privilege;
还有修改mysql配置文件的方法即 bind-address= 127.0.0.1注释掉即可------>在my.ini中找到bind-address=0.0.0.0就是所有IP地址都能访问,也可以不要这个属性,具体情况我也没有尝试。