事件起因:
- 今天备份数据库一张表的一段数据,打算试下mysqldump命令。但是没有用过linux连接MySQL,于是在linux 控制台直接输入mysql,提示:
Access denied for user 'txcs'@'localhost' (using password: NO)
。于是我就以为是txcs
这个用户没有权限,于是切换到root
用户,但又提示:Access denied for user 'root'@'localhost' (using password: NO)
。此时我依然认为是我linux的root用户环境变量有问题,所以才。。 - 之后别人跟我说,MySQL连接是强连接,应该是TCP协议,用的socket通信。直到此时我依然没有想到错误提示的
'txcs'@'localhost'
与'root'@'localhost'
中的txcs
与root
是指的root,又过了下,才恍然明白这的提示其实是MySQL的用户。
问题:
- 第一次提示:就算不会如何连接MySQL,但是看到
localhost
也该猜想,这个很可能指的是主机名。如果能想到这,那么之后的麻烦就没有了。 - 第二次提示:看到这次提示,与前一次提示的信息对比,那么基本可以确定这里的用户显然不是linux用户了。
- 别人给我讲MySQL的连接原理,加上我昨天看了http TCP/IP socket之间的关系,那么也该想到连接MySQL跟是你是哪个用户有毛关系?访问数据库只是几次握手,确立连接,就可以进行数据传输了。
反思:该想到,为什么没有想到?
- 因为自己太不用心了,总以为这是很简单的东西,根本没有处处留心,处处思考。
- 留心观察错误提示,是个非常重要的意识。
- 多多思考,学过的东西不是死的,这点很重要。