1 insert 语句
首先要知道mysql有个user表专门存储用户信息的,按说可以直接向 mysql.user表中插入new user,但是因为字段比较多,外加一些未知的限制,很容易出错 (至少我还没尝试成功);并且如果使用这种方法创建新用户,必须执行 flush privileges 来告诉server to reload the grant tables。
相关:
1) 基本语法:
创建用户:
INSERT INTO mysql.user (Host,User,Password)
VALUES('localhost','user_name',password('your_pwd'));
FLUSH PRIVILEGES;
//提示错误 ssl_cipher 没有默认值,但是查询user表 属性是可为NULL;按照官方文档设置相应字段还是提示column count doesn't match value count at row 1 。
授予权限:
INSERT INTO db
(Host,Db,User,Select_priv,Insert_priv,
Update_priv,Delete_priv,Create_priv,Drop_priv)
VALUES('localhost','database_name','user_name',
'Y','Y','Y','Y','Y','Y');
-> FLUSH PRIVILEGES;
FLUSH PRIVILEGES;
2)user表:
>desc mysql.user; //查看表结构
>select * from mysql.user; //查看所有的用户
>select current_user; //查看当前用户和主机名
2 create/grant 语句
以 root身份登陆,创建新用户:用户名为dbuser_name,密码为user_pwd
>mysql -u root -p
[input password]
创建+赋权的标准语法:grant select,insert,update,delete on 数据库.* to 用户名@登陆主机 identified by 'your_pwd'
>grant all on *.* to dbuser_name@"%" identified by
>grant all privileges on *.* to dbuser_name@localhost dentified by
或分开
>create user主机名' identified by
>grant all/[privileges] on 数据库名.* to
ps:关于主机名的通配符
%:指允许任何ip地址的主机访问mysql server
172.1.1.%或%.mydomain.com
localhost:只允许本机访问
附:远程访问
1)server端创建用户和数据库和允许访问的主机(如上);关闭防火墙或其他可能限制访问的设置
2)要进行远程访问的本机安装mysql(或client工具);安装myodbc驱动并做相关配置
3)mysql环境下进行远程访问 (>mysql -h [要访问的mysql server的IP] -u [user_name] -p [password] )
3 新用户登入
cmd路径:
c:\mysql\bin\mysql -h 服务器IP -u dbuser_name -p
[input password]
>create database database_name;
>create table table_name;
4 修改用户密码(root用户下)
mysql>update mysql.user set password=password('新密码') where user="user_name" and host="localhost"
mysql>flush privileges;
5 删除用户(在root用户下,保证具有删除权限)
mysql>delete from mysql.user where user="用户名" and host="主机名";
官方文档参考 http://dev.mysql.com/doc/refman/5.1/en/index.html