MySQL 远程连接
不论远程或是本地连接,我们都需要一个帐户,所以创建账户是首要的。
比如 ’test1’@’localhost’ 表示在用户 test1 只能在本机连接
比如 ’ test2@’192.168.1.1’ 表示用户 test2 只能从 IP 为 192.168.1.1 上的主机连接
比如 ’test3’@’%’ 表示 test3 可以从任何主机连接
所以说 MySQL 远程连接和本地连接从权限上来说是一样的,只是更改主机名而已。
创建账户有几种办法
1. 使用图形化管理界面:
比如 MySQL Administrator, SQL Manager for MySQL 等,比较容易操作,简单容易,不过对于你了解 MySQL 也许没什么好处。
2. 直接使用 insert,update 命令
MySQL 的用户信息存放于 `mysql`.`user` 中,你可以使用 select * from mysql.user 查 看用户表。一般来说,对于连接部份,你只需要查看 select user,password,host from mysql.user; 既用户名,密码,主机名,当然密码是通过 PASSWORD ()函数做的哈希散列,不是叫你去反推,有时候可以直接看出来密码有问题, UPDATE 一下。
在 MySQL 4.1 之前 , 用 PASSWORD() 函数计算的密码哈希值有 16 个字节长。
在 MySQL 4.1 中,可以生成 41 字节的哈希值
在更改密码时,仍然可以使用 old_password 来进行加密,但是连接时也要用 old_password 验证。
3. 使用 SQL 语句 GRANT 和 REVOKE
详见 mysql5.1 参考手册,我就不打字了,累
以上是比较常用的三种方法,还有 PERL 脚本等,都可以添加,更改用户。
实例:
分两步:
创建用户
Mysql>grant all on *.* to ‘abcd’@’192.168.1.2’ identified by ‘123456’
重载权限表
>mysqladmin –uroot –p reload
/*grant all 授予除 SUPER 以外的所有权限, super 权限必须用 grant super 单独授予 */
/*on *.* 表示将这个权限赋予任意数据库的任意表,如果我们需要指定表,比如 test 数据库下的 t1 表,那就是 on test.t1*/
/*to ‘abcd’@’192.168.1.2’ 表示用户,主机名 indentified by ‘123456’ 是密码 */
执行该语句后, select user from mysql.user; 你可以看到你刚刚加入的用户已经加入 user 表了,但是还不能用这个帐号登录。
我更习惯于使用
Mysql>grant all on *.* to ‘123’@’192.168.1.3’;
Mysql>update mysql.user set password=password(123456);
第一句创建一个密码为空的用户,第二句设置密码。
你加入的用户只有在 reload 后才有用。