12
2014
01

mysql创建远程登入用户

首先,先创建一个用户,这步应该很简单。

用root账户(或者其他有权限的账户)登录,

mysql -u root -p     回车

输入密码    回车

差不多看到的就是如下的界面了。

未命名.jpg

切换到mysql表

在user表里插入一个用户就OK

mysql> use mysql

Database changed

mysql> insert into user(host,user,password) values('localhost','test',password('123456'));


这样就创建了一个名为test的用户

然后给该用户授权

授权还是得谨慎操作,尤其是你建这个用户不是给自己用,而是公共用的时候,如果赋予了很大的权限,有可能一个不熟悉操作的人就把数据库给毁了。授予该用户必须的权限即可。尤其是权限表的改写权限,最好不要给除root用户外的其他任何用户。

这里建一个数据库,为了方便这里把该库所有的权限给test,即得赋权完需要刷新下权限,使之生效。

mysql> create database testDB;

Query OK, 1 row affected (0.04 sec)

mysql> grant all privileges on testDB.* to test@localhost identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

以上是教科书式的方法,事实上也确实创建了一个用户,我们也可以试着登录下。

未命名.jpg

接下来我们远程连接一下看看。

以Navicat for mysql作为工具为例。

却发现报1045的错误

1045 -Access denied for user 'root'@'182.110.4.196'(using password:YED)

未命名.jpg

难道上面介绍的操作有错吗?教科书式的操作,能错到哪去呢。

嗯,是的,操作并没有问题,问题出在上面我们是创建了一个本地用户,所以我们用命令窗口该用户是可以登录的。那怎么把本地用户允许远程登录呢?

两种方法。

方法一:把允许远程访问的用户host改为%,比如上面说到的test用户,update一下就可以了,就不截图了。

注:为什么是%,其实开始博主也纳闷了一下。再一想就明白了,%在mysql中是通配符的,host改为%即表示任意主机都可以通过test及其密码来访问数据库。

方法二:还是授权

mysql> GRANT ALL PRIVILEGES ON testDB.* TO 'test'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH   PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

这回再试试,连接一下,轻松连上。

未命名.jpg

再回到刚那个%,通配符通配符,即可以匹配某一类。那我不想给所有IP都访问数据库的权限是不是可以多点限制?比如我只想给192.168.1.*的用户授权,那么就可以把host改为192.168.1.%或者授权语句改为

GRANT ALL PRIVILEGES ON testDB.* TO 'test'@'192.168.1.%' IDENTIFIED BY '123456' WITH GRANT OPTION;

嗯,就是这么用。一点点操作,一个可远程连接的用户就建好了。

« 上一篇下一篇 »

相关文章:

mysql修改默认字符集  (2014-1-1 11:19:17)

linux下修改mysql密码  (2013-8-5 22:10:0)

一个简单的MySql连接操作类  (2013-1-7 13:33:30)