基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限。下面是基本的步骤:
1、登录到mysql中,为root进行远程访问的授权,执行下面的命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
mysql> flush privileges;
第一句中"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:
GRANT ALL PRIVILEGES ON *.* TO root@"172.168.193.25" IDENTIFIED BY "root";
第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
2、修改/etc/mysql/my.cnf,需要root用户权限。找到文件中的:
[ruby] view plaincopyprint?
bind-address = 127.0.0.1
将其注释掉,保存。
3、重新启动MySQL服务器。执行下面的几条命令即可:
# /usr/bin/mysqladmin -u root -p shutdown
# /usr/bin/mysqld_safe &
如果mysqladmin和mysql_safe不在/usr/bin目录中,可以通过whereis命令查找,例如:
# whereis mysqladmin
mysqladmin: /usr/bin/mysqladmin /usr/share/man/man1/mysqladmin.1.gz
执行完上面的三步后,就可以通过远程机器连接了数据库了。[b]另一说法:[/b]
Step 1:
use mysql;
select host,user,password from user;
host字段表示登录的主机,其值可以用IP,也可用主机名,
将host字段的值改为%就表示在任何客户端机器上能以某用户登录到mysql服务器。
Step 2:
创建一个新用户test:
格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";
grant select,update,insert,delete on *.* to test@192.168.0.99 identified by "test";
GRANT ALL PRIVILEGES ON db.* TO user@localhost identified by "test";
Step 3:重新加载 记住:对授权表的任何修改都需要重新reload
./mysqladmin -uroot -ppwd reload
或者:FLUSH PRIVILEGES;
ok...
附:修改密码
use mysql;
UPDATE user SET password=PASSWORD("new password") WHERE user='user name';
FLUSH PRIVILEGES;
版权声明:本文为lijunaccp原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。