关于MySQL连接报错:1045的问题

时间:2022-04-09 23:11:09

最近在研究InstallAnywhere,在制作安装包过程中需要导入数据库脚本,选择了使用命令行来导入数据库脚本;于是写了一个批处理文件来进行SQL文件的导入其中用到了mysqldump命令进行导入,使用这个命令的时候需要传入:用户名、密码、主机地址、端口,这些参数于是得到了如下的命令行代码:

call "F:\Program Files\mysql-5.6.24-winx64\bin\mysqldump" -uroot -p123456 -h127.0.0.1:3306 zcwy < G:\Users\Sunt\Desktop\installAnywhere\zcwy.sql
乍看之下没有什么问题,但是一运行老是提示:
mysqldump: Got error: 2005: Unknown MySQL server host '127.0.0.1:3306' (2) when trying to connect
提示找不到“127.0.0.1:3306”的主机,于是上网搜索一波,发现mysql是不支持"IP:端口号"的写法,需要将主机地址与端口分开写,于是得到下面的代码:
call "F:\Program Files\mysql-5.6.24-winx64\bin\mysqldump" -uroot -p123456 -h127.0.0.1 -p3306 zcwy < G:\Users\Sunt\Desktop\installAnywhere\zcwy.sql
修改之后运行,又提示下面的问题:
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
再次上网搜索一波,发现全是什么密码不正确,需要修改密码,但是我能确认我的密码就是123456,于是我觉得这个可能需要自己摸索。于是我就怀疑是不是命令有问题,于是我把mysqldump命令改成了mysql,发现还是有这个问题,于是敢肯定是后面的参数有问题了,于是我一个一个参数的去掉测试,发现只要去掉端口参数就能够正常运行不会报错,于是我在想是不是3306有问题,但是马上又否决了(因为我用其它客户端相同的端口使能够登录上去的)。于是上网有针对性的搜索一波,终于发现了问题所在,原来是端口号参数的:-P3306,这个p一定要大写(其实早该发现的为了与密码的p区分开来),因此正确的命令应该是如下命令:
call "F:\Program Files\mysql-5.6.24-winx64\bin\mysqldump" -uroot -p123456 -h127.0.0.1 -P3306 zcwy < G:\Users\Sunt\Desktop\installAnywhere\zcwy.sql
这样就没有问题了。以上!