远程连接服务器上的MySQL


一、通过Navicat远程连接Mysql数据库

  1. 打开navicat,点击连接,选择MySQL。

  1. 输入主机和用户名和密码

二、通过cmd命令行远程连接Mysql数据库

shell> mysql -h host -u user -p
Enter password: ********

hostuser 表示为运行 MySQL 服务器的主机名和 MySQL 账户的用户名。 为你的设置替换适当的值。******** 代表你的密码; 当 mysql 显示 Enter password: 提示时输入它.

##远程连接MySQL常见报错问题

1、1130 - Host XXX is not allowed to connect to this MySQL server

该问题是由于服务器上的MySQL帐号不允许从远程登陆,只能在localhost连接。

解决方法:

1.登录服务器中的MySQL

mysql -u root -p

2.查看原先数据库的权限信息

use mysql;
select host,user from user;

发现 host中只有localhost具有root权限,而localhost默认的ip是192.168.1.1,所以我们需要修改ip。%是个通配符,若host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果host=%,表示所有IP都有连接权限。

注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置;

3.依次执行如下命令

use mysql;
# select host from user where user='root'; //本命令为查看单独的root,若执行了上面的select host,user from user;,这个可以省略
update user set host = '%' where user ='root';

修改成功后,会是这样的。

host设置了“%”后便可以允许远程访问。

4.执行flush privileges使配置立即生效

flush privileges;

2、设置(或修改)root用户密码

在修改前,我们先看看怎么查询用户密码

#查询用户密码命令:
mysql> select host,user,authentication_string from mysql.user;

host: 允许用户登录的ip‘位置’%表示可以远程;

user:当前数据库的用户名;

authentication_string: 用户密码(后面有提到此字段);

1.mysql 5.7版本以前的修改方法

方法1: 用SET PASSWORD命令

格式:mysql> set password for 用户名@localhost = password(‘新密码’);

mysql> set password for root@localhost = password('123'); 

方法2:用mysqladmin

格式:mysqladmin -u用户名 -p旧密码 password 新密码

mysqladmin -uroot -p123456 password 123 

方法3:用UPDATE直接编辑user表

mysql> use mysql; 
mysql> update user set password=password('123') where user='root' and host='localhost'; 
mysql> flush privileges; 

方法4:在忘记root密码的时候,可以这样

以windows为例:

  1. 关闭正在运行的MySQL服务。
  2. 打开DOS窗口,转到mysql\bin目录。
  3. 输入mysqld --skip-grant-tables回车。--skip-grant-tables的意思是启动MySQL服务的时候跳过权限表认证。
  4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
  5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
  6. 连接权限数据库:use mysql;
  7. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。
  8. 刷新权限(必须步骤):flush privileges;
  9. 退出quit;
  10. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

2.mysql 5.7以上的修改方法

mysql 在5.7.9以后废弃了password字段和password()函数;password字段已从mysql.user表中删除,改用authentication_string:字段表示用户密码。

//选择数据库:
use mysql;

//更新root的密码:
update user set authentication_string=password('新密码') where user='root' and Host='localhost';

//刷新权限:
flush privileges;

3.mysql 8.0以上的修改方法

(1)如果当前root用户authentication_string字段下有内容,先将其设置为空,若没有可以直接进行二步骤。

use mysql; 
update user set authentication_string='' where user='root'

(2)使用ALTER修改root用户密码,方法为ALTER user 'root'@'localhost' IDENTIFIED BY '新密码'。如下:

ALTER user 'root'@'localhost' IDENTIFIED BY 'MySQL123#'

此处有两点需要注意:

1、不需要flush privileges来刷新权限。

2、密码要包含大写字母,小写字母,数字,特殊符号。

修改成功; 重新使用用户名密码登录即可;

注意: 一定不要采取如下形式该密码:

use mysql; 
update user set authentication_string="newpassword" where user="root";

这样会给user表中root用户的authentication_string字段下设置了newpassword值;

当再使用ALTER USER ‘root’@’localhost’ IDENTIFITED BY ‘newpassword’时会报错的;

因为authentication_string字段下只能是mysql加密后的41位字符串密码;其他的会报格式错误;


文章作者: 弈心
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 弈心 !
评论
  目录