本文主要介绍使用 MySQL 过程中遇到的常见问题及相应的解决方案。

1. show databases查询结果不完整

【问题描述】:

使用“show databases”命令查询数据库信息时,查询出来的结果没有将所有的数据库信息都显示出来,如下:

上述查询结果只显示了数据库“information_schema”,而实际上还存在其他数据库。

【解决方案】:

通常,出现这种情况是因为当前登录 MySQL 的“用户/主机名”权限不足。使用“show grants”命令查询当前用户的权限,如下:

由上述结果可得到两条信息:

  • 当前的mysql用户,是从“localhost”主机登录到 MySQL 服务器的;
  • 对于从“localhost”主机登录到 MySQL 服务器的mysql用户(无论哪个用户身份),都只有 USAGE 权限(即空权限)。

根据以上两条信息,得知数据库显示结果不完整就是用户/主机名权限不足导致的,所以为了解决此问题,需要放开相应的用户/主机名的权限。

具体的解决步骤如下:

1. 在mysql的配置文件 /etc/my.cnf 的“[mysqld]”配置下,添加“skip-grant-tables”,跳过权限检查,如下:

2. 重启 MySQL 服务器,如下:

systemctl restart mysqld

3. 再次连接 MySQL 服务器,并查看数据库信息:

[root@node1 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.40 MySQL Community Server (GPL)Copyright (c) 2000, 2018, 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 |
| mysql              |
| performance_schema |
| testdb             |
+--------------------+
4 rows in set (0.00 sec)mysql> 

在上述结果中能够看到,现在已经能够正常显示所有数据库了。

但是,这是我们跳过了权限检查的结果,而跳过权限检查可能会带来数据库安全隐患,所以我们需要通过修改 用户/主机名 的权限来从根本上解决此问题。

4. 放开对应 用户/主机名 的权限

MySQL 数据库的 用户/主机名 权限信息存放在数据库“mysql”下的表“user”中,如下:

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql>
mysql> select host,user,password from user;
+-----------+------+----------+
| host      | user | password |
+-----------+------+----------+
| node1     | root |          |
| %         | root |          |
| ::1       | root |          |
| localhost |      |          |
| node1     |      |          |
+-----------+------+----------+
5 rows in set (0.00 sec)mysql> 

在 user 表中,我们看到了主机名(host)为“localhost ”的记录,通过下面的命令删除、插入该条记录,来放开其对应的权限,如下:

mysql>
mysql> delete from user where host = 'localhost';
Query OK, 1 row affected (0.00 sec)mysql>
mysql> insert into user values('localhost', 'root', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', '', 'N');
Query OK, 1 row affected (0.00 sec)mysql> select host,user,password from user;
+-----------+------+----------+
| host      | user | password |
+-----------+------+----------+
| node1     | root |          |
| %         | root |          |
| ::1       | root |          |
| localhost | root |          |
| node1     |      |          |
+-----------+------+----------+
5 rows in set (0.00 sec)mysql>

执行上述操作之后,就放开了主机名为“localhost ”、用户名为“root”的用户权限。

注意:上面的 insert 操作的内容需要根据实际情况进行设置。

5. 去掉配置文件 /etc/my.cnf 中的“skip-grant-tables”内容,重启 mysql ,再次登录mysql,查询数据库,观察查询结果,如下:

[root@node1 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.40 MySQL Community Server (GPL)Copyright (c) 2000, 2018, 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 |
| mysql              |
| performance_schema |
| testdb             |
+--------------------+
4 rows in set (0.00 sec)mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)mysql> 

上述结果显示,主机名为“localhost ”、用户名为“root”的用户具有的所有权限(ALL PRIVILEGES);并且在查询数据库时,也能够显示所有的数据库信息了。

2. 远程客户端连接不到mysql服务器

2.1 防火墙问题

【问题现象】:

[root@node2 ~]# mysql -h "192.168.213.130" -u root -p ""Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.213.130' (113)
[root@node2 ~]# 

【解决方案】:

查看远程客户端以及mysql服务器的防火墙是否开启,如果是,先关闭防火墙,再进行连接。如下:

[root@node3 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2018-05-24 20:26:21 CST; 11min agoDocs: man:firewalld(1)Main PID: 651 (firewalld)CGroup: /system.slice/firewalld.service└─651 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopidMay 24 20:26:21 node3 systemd[1]: Starting firewalld - dynamic firewall daemon...
May 24 20:26:21 node3 systemd[1]: Started firewalld - dynamic firewall daemon.
[root@node3 ~]#
[root@node3 ~]# systemctl stop firewalld
[root@node3 ~]# 

再次连接mysql服务器,能够连接成功了。

MySQL常见问题及解决方案相关推荐

  1. mysql 10分钟_10分钟入门mysql(含常用的sql语句,mysql常见问题及解决方案)

    开发中常用的sql语句 1,创建一个数据库并指定编码格式 drop database if exists test;create database test default character set ...

  2. OpenStack环境搭建(六:常见问题及解决方案总结)

    实验要求: 完成Virtual box平台安装,会应用相关操作: 在virtual box虚拟平台上部署Fuel Master节点: 在virtual box虚拟平台上部署计算节点Computer: ...

  3. ESXi6.5环境搭建(五:常见问题及解决方案实验总结)

    实验目的及要求 完成VMware workstations安装,会应用相关操作: 完成虚拟机中ESXI6.5平台的安装及网络环境配置: 完成VMware vSphere Client 6.0软件在PC ...

  4. mysql常见问题处理-插入数据error code:1206

    mysql常见问题处理-插入数据error code:1206 mysql  error code:1206 the total number of locks exceeds the lock ta ...

  5. C#中使用WCF一些常见问题及解决方案

    C#中使用WCF一些常见问题及解决方案 参考文章: (1)C#中使用WCF一些常见问题及解决方案 (2)https://www.cnblogs.com/52XF/p/3740326.html 备忘一下 ...

  6. gulp几个常见问题及解决方案

    gulp几个常见问题及解决方案 参考文章: (1)gulp几个常见问题及解决方案 (2)https://www.cnblogs.com/hjson/p/10546708.html 备忘一下.

  7. Mycat常见问题与解决方案

    Mycat常见问题与解决方案 参考文章: (1)Mycat常见问题与解决方案 (2)https://www.cnblogs.com/it-deepinmind/p/11913519.html 备忘一下 ...

  8. [持续更新]UnsatisfiedLinkError常见问题及解决方案

    [持续更新]UnsatisfiedLinkError常见问题及解决方案 参考文章: (1)[持续更新]UnsatisfiedLinkError常见问题及解决方案 (2)https://www.cnbl ...

  9. MySQL大小写敏感的解决方案

    MySQL大小写敏感的解决方案 参考文章: (1)MySQL大小写敏感的解决方案 (2)https://www.cnblogs.com/developer_chan/p/9247674.html 备忘 ...

  10. 为什么焊锡老是粘在烙铁头上_自动焊锡机常见问题及解决方案「由力自动化」...

    随着科技的不断进步,一些行业中机器替代人工是避不可挡的一种发展趋势,自动焊锡机因为所能使用的行业广泛相信很多的朋友都有所了解,那么自动焊锡机器人使用时常见问题有哪些呢,该如何解决呢?下面小编来简单的讲 ...

最新文章

  1. 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)
  2. 在做项目中遇到的JS问题
  3. 【MIT港科大】最新《贝叶斯深度学习》2020综述论文,35页pdf全面阐述最新进展...
  4. Hibernate 缓存机制
  5. 想做“冲顶大会”?全球首套直播竞答解决方案来了!
  6. 【JQuery】将Json Object序列化成URL的QueryString
  7. 微軟平台的管理專家 - Microsoft Operations Manager (MOM)
  8. P1972 [SDOI2009]HH的项链
  9. html编辑器不支持自定义样式,百度编辑器自定义按钮样式问题(写在cssRules不起做用)?...
  10. java映射的概念_Java 反射 概念理解
  11. NOI数据结构:树套树
  12. 关于MySQL存储过程异常处理的一点心得
  13. 如何用 Lua 查询青云的主机
  14. Windows系统服务器IIS7.5 Asp.net支持10万请求的设置方法
  15. L1-078 吉老师的回归 (15 分)
  16. 根据输入数字显示对应的英文星期名称缩写
  17. go 学习笔记之值得特别关注的基础语法有哪些
  18. 计算机开机主机不停地重启,求救:电脑一直重启,开机自检后,一会就重启
  19. 孙子兵法的计是最早的SWOT分析,《孙子兵法》首先不是战法,而是不战之法。首先不是战胜之法,而是不败之法...
  20. 安卓开发教你监听手机Home键

热门文章

  1. 首座生态厕所亮相兰州 生物降解“三年不臭”
  2. django允许跨域请求配置
  3. md5只是用来签名,签名的作用是保证数据完整不会被破坏而已。签名和加密是两回事...
  4. leetcode 175. Combine Two Tables
  5. 使用SCCM Toolkit2中的Trace32来查看MDT日志
  6. pku1088----滑雪(记忆性搜索)
  7. Ubuntu使用零碎记录
  8. append 注意事项
  9. [ NOI 2001 ] 食物链
  10. GUN/LINUX的文件类型