MySQL只能远程登录,无法登录本机

问题描述:

        新建了一个IP地址,在使用DataGrip的时候,可以连上,但没有办法正常访问数据库。就像下图这样:

        而当我们使用虚拟机连接的时候,会发现没有办法通过本机进行连接 ,只能使用远程账户连接才能成功访问数据库内容。

        MySQL在登录的时候,无法通过本地连接的方式登录到MySQL账户上。最直接的表现就是下面这样:

本机访问:

[root@localhost ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.6.51 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

这里虽然可以登录到MySQL数据库中,但是实际显示的数据库应该包含至少三个,information_schema、mysql、performance_schema。

远程访问:

[root@localhost ~]# mysql -uroot -h192.168.153.133 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 38
Server version: 5.6.51 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myschool           |
| mysql              |
| performance_schema |
| test01             |
+--------------------+
5 rows in set (0.00 sec)

        由于只有通过远程方式访问的时候,我们才能查看到数据库内容。所以猜测可能是配置用户操作权限的时候配置出现了问题。

        这里SQLyog可以连接的上,选择mysql数据库中的user表,显示如下:

use mysql;
select * from user;

         我们可以看出,localhost本机用户在连接时用户和密码字段都是空值。我们需要对其进行赋值。

为其重新分配user和password

GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '123123';
FLUSH PRIVILEGES;

我这里在修改权限的时候会出现1045错误代码,错误代码如下: 

mysql> GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '123123';
ERROR 1045 (28000): Access denied for user ''@'localhost' (using password: NO)

显示用户拒绝访问。

这里则是因为我们的密码设置有问题,需要进行修改。修改密码格式如下:

mysql> USE mysql;
Database changed
mysql> UPDATE user SET authentication_string="123123" WHERE user="root";
Query OK, 1 row affected (0.39 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> FLUSH privileges;  # 刷新保存
Query OK, 0 rows affected (0.13 sec)

下面,就可以继续进行操作了~

再次登录我们会发现此时用户和密码都已经更改,再次尝试连接。这次可以成功连接了。 

 

 现在就能成功连上DataGrip啦~

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL是一种流行的开源数据库管理系统,管理员帐户root可以拥有完全的访问权限,包括允许从任何远程主机连接到MySQL服务器。 然而,出于安全考虑,应该对root用户实施访问限制,以保护您的数据库系统免受非法访问和攻击。 MySQL提供了一种简单的方法来限制root用户的远程登录。这可以通过以下两种方法之一实现: 1. 修改MySQL服务器配置文件my.cnf: 用户可以通过编辑my.cnf配置文件来禁用root用户的远程访问。 ``` # vim /etc/mysql/my.cnf ``` 找到[mysqld]部分,加入一行: ``` bind-address = 127.0.0.1 ``` 这个选项会强制MySQL服务器只监听本地IP地址127.0.0.1的连接,这意味着root用户只能从本地主机登录MySQL,而无法从远程主机访问。保存并退出配置文件,然后重启MySQL服务。 ``` # systemctl restart mysql ``` 2. 删除root用户的远程访问权限: 用户可以在MySQL命令行中通过执行以下命令来删除root用户的远程访问权限: ``` # mysql -u root -p Enter password: ``` 进入MySQL命令行后,运行以下命令: ``` mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'root'@'%'; mysql> DELETE FROM mysql.user WHERE User='root' AND Host='%'; mysql> FLUSH PRIVILEGES; mysql> exit; ``` 这些命令将取消root用户所有数据库的权限,并删除所有具有远程主机连接权限的root用户。然后刷新它们的权限设置并退出MySQL命令行。这会禁用root用户的远程访问权限。 尽管在MySQL限制root用户的远程访问权限可以增加数据库的安全性,但是如果必须从远程主机访问数据库,您可以在MySQL中创建一个非root用户,授予他们最低限度的安全权限来进行数据库的操作。这样可以保护数据库免受潜在的安全威胁,同时保持正确的访问权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

five小点心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值