MySQL命令行连接指定端口、以及修改数据库密码

用cmd命令行及Navicat界面连接数据库,实现修改数据库密码、连接不同端口(如3307等)、以及解决MySQL server has gone away的问题。

首先说一下,如果只是为了解决问题的话,建议直接跳到文章中间从Navicat的方法进行,这里的cmd只是为了解释其机制。

1.命令行连接MySQL数据库

  MySQL的配置一般由数据库Data目录下的my.ini文件控制(Windows环境下叫my.ini,而在Linux环境下则是my.cnf),虽然直接修改这个文件也能起到一定作用,但容易出事,故一般情况下要配置MySQL的话最好使用MySQL的命令行。从cmd就可以执行。从cmd连接MySQL数据库的方法如图所示:

  因为我的MySQL装到了E盘上,而cmd默认路径在C盘的system32,所以我们首先得用e:换盘,否则怎么cd都没有用的。换盘后,cd路径到MySQL的bin目录下,即拥有mysqld.exe和mysql.exe的那个位置;
这里我采用的命令为:

1
mysql -hlocalhost --port=3306 -uroot -p

  这个命令的好处是可以实现对接指定的端口(如3307)。因为我实际上装了两个不同版本的MySQL服务(MySQL5和MySQL8),分别控制着localhost_3306localhost_3307。一般的那种不指定端口的常规命令会默认连到localhost_3306去,就无法连接到3307了。故我们只需要将命令中port的值改为3307即可连入3307的服务器控制台。

  接下来输入数据库密码,出现图中Welcome to the MySQL monitor等字样即说明连接成功。接下来即可执行其他命令。例如,我最近在导入大.sql文件(约200Mb)时遇到了“MySQL server has gone away”的问题,经查,这是由于数据库对导入的sql大小有限制导致的,需要修改这个限制值。首先通过命令来查看这个值:

1
show global variables like 'max_allowed_packet';

  然后修改它。这里的文件大小是用字节(Bytes)计算的,可以自行换算成Mb等单位,如:

1
2
set global max_allowed_packet=157286400;	/* 设定为150Mb */
set global max_allowed_packet=314572800; /* 设定为300Mb */

  最后可以再输入一次命令查看限制值,可以看到已经改成了300Mb。整个过程就如图所示。

  而实际上,在数据库管理工具(如Navicat)中也能实现这个功能,而且比cmd简单多了。这里我们就从Navicat上修改它。因为我现在已经放弃3307的端口(让二者共用3306,但冲突),故这里以3306为例:

  在localhost_3306上 右键>命令列界面 就可以进入命令行状态,事实上选中3306后直接按F6也可以(在上面的“工具”栏),比从cmd上方便太多了。之后的步骤和上面就是一样的。所以如果遇到需要用命令行执行的操作,在Navicat等图形化工具上进行处理明显是更合适的方法。


2.修改数据库密码

  利用MySQL的命令行我们也可以修改数据库的密码。前提是得知道这个密码,这里不涉及忘了密码的情况(还没研究过…)。

  在Navicat上进入对应数据库连接的命令行界面,这里以3306为例,因为我们已经登录了这个连接,也就不需要再验证旧密码了,直接可以用命令新建密码。命令为:

1
set password = password("新密码");

  将命令中“新密码”修改为需要设定的密码即可。因为密码已被修改,再在数据库中执行动作可能会导致数据库掉线或者密码报错,此时建议先关闭连接,再用新密码连接一遍数据库即可(右键>编辑连接>在“密码”处输入新的密码)。

  • 版权声明: 本博客所有文章著作权归作者所有,禁止任何形式的转载。
  • Copyrights © 2019-2026 Caelica

请我喝杯咖啡吧~