今天收到任务,要求在mysql中对某库新建一个用户,并可以通过局域网访问。嗯,很简单的需求,我也操作过很多遍了,三下五除二搞定并把相关信息发给了研发同事。
过了一会研发同事告诉我说不行啊, 有问题,登录不上呢,我测试了以后还真是,提示说ERROR 1045 (28000): Access denied for user 'dbuser'@'192.168.1.5' (using password: YES)
。不光远程登录不上,连本机也是如此。
再次用root登录mysql,检查用户表,检查授权表,均未发现异常,之前操作授权的窗口还未关闭,再次确定不是密码错误。创建了一个测试库以及测试用户试试,这里的密码是直接复制粘贴的。
mysql> create database testdb; Query OK, 1 row affected (0.00 sec) mysql> create user testuser@'%' identified by 'dSVtT-S&H4L>9ZF\Zk'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on testdb.* to testuser@'%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
测试的结果显示新用户testuser居然也登录不上。难道是我记错什么地方了?查了查笔记,我的操作并没有什么问题,毕竟也没有报错嘛。在mysql的官方网文档中查了半天也没查到什么有用的信息。至于直接搜索登录时的报错信息,那查出来的基本都是说教你怎么重置mysql root密码的,这显然不对。
一个多小时过去了,无奈只好请教了下DBA朋友,朋友没看出什么问题,但提醒说你试试改个简单点的密码?我最开始还想反驳对方,毕竟我这个是强密码,不过我还是照做了。没想到改了一个弱密码后还真可以了。我朋友告诉我说mysql的密码尽量别用特殊字符了,直接用大小写英文+数字就好了。回看一下我之前的密码"dSVtT-S&H4L>9ZF\Zk",看起来特殊字符"\" 的嫌疑最大,实际测试果然如此,到此,问题总算水落石出了。
总结:mysql下的密码不能随便设置,一些特殊字符出现在密码中可能会引起意想不到的错误。
文章评论