MySql access denied for user错误
方法/步骤
MySql远程连接时的“access denied for user **@**”错误,搞的我很头大,后来查出来解决方法。记录一下,怕以后再忘记:
首先本地登陆MySQL,然后执行这两句代码:GRANT ALL PRIVILEGES ON *.* TO root@’%’ IDENTIFIED BY ’000000′;FLUSH PRIVILEGES;格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by “用户密码”;
-
3
参数说明: ALL PRIVILEGES表示赋给远程登录用户的权限,ALL PRIVILEGES表示所有的权限,你也可以单独或组合赋select,update,insert,delete权限;*.*:第一个*表示要赋权的数据库名,*当然表示全部数据库了,第二个*表示数据库下的表名,同理,*表示全部表,像我这样的懒人当然就直接用*.*了,反正都是自己开发用
-
4
root表示要赋权的用户;%表示远程登录的IP,如果要限制登录IP的话,这里就添你允许登录的IP,比如192.18.1.99等,%表示不限制IP(再次偷懒),000000是用户远程登录的密码。就这么简单。这句运行以后再运行FLUSH PRIVILEGES,搞定!
不是提示了么:不是自己开的服务端不能连接。 试着用mysql的命令行连接一下,根据相关的提示进行处理。一般要开放所需要的端口,设置用户的远程连接权限就可以连接了。如果命令行可以连接,工具应该也是可以的。 如果只是为了管理数据库,可以装个web的管理放服务器,也挺方便的。
追问
服务端是我自己的 数据库密码正常 就是外在用工具连接不上 如果设置端口对外开放? 设置用户远程连接权限?
追答
用命令行连接的方法可以参照下面这个方法:
新使用MySQL,说起来是个简单的事情,但是却费了些周折:
1、登陆服务器端,进入命令行,windows cmd;
2、设置用户、密码让指定的IP访问:mysql -u root -p 或安装的快捷方式进入:MySQL Command Line Client,使用grant命令:
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令';
例子:
mysql>grant select,insert,update,delete,create,drop on mydb.mytable to lzpddd@192.168.1.88 identified by 'mypassword';
给来自192.168.1.88的用户lzpddd分配可对数据库 mydb的mytable表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为'mypassword';
mysql>grant all privileges on *.* to lzpddd@192.168.1.88 identified by 'mypassword';
给来自192.168.1.88的用户lzpddd分配可对所有数据库的所有表进行所有操作的权限限,并设定口令为'mypassword';
mysql>grant all privileges on *.* to lzpddd@'%' identified by 'mypassword';
给来自任何IP地址的用户lzpddd分配可对所有数据库的所有表进行所有操作的权限限,并设定口令为'mypassword';
3、关闭服务器端防火墙或者开放3306端口(很重要);
(自己在防火墙,或是操作系统相关的地方进行设置。)
4、客户端连接:
进入命令行,windows cmd,连接:
mysql -u 用户名 -p密码 -h 服务器IP地址 -P 服务器端MySQL端口号 -D 数据库名
注意:
(1)服务器端口标志-P一定要大些以区别于用户-p,如果直接连接数据库标志-D也要大写;
(2)如果要直接输入密码-p后面不能留有空格如-pmypassword;
(3)命令结束段没有';'分号。
例子:
mysql -u lzpddd -pmypassword -h 192.168.1.88 -P 3306 -D mydb