mysql bingip,MySQL报错Ignoring query to other database的真正原因

大家都知道报这个错的原因是忘了用户名前加-u这个参数造成的,比如是这样登录了MySQL

# mysql -root -p (注意看,-root前面没有加u)

登录后,不管你执行什么命令,都会提示Ignoring query to other database

mysql>show databases;

Ignoring query to other database

要解决这个问题,我们只要加上-u这个参数就可以了。

# mysql –uroot -p

网上很多都写到这里为止了,但并没有去分析为什么没有加-u也能登录成功,为什么登录成功后执行sql语句会报错。

这里我就给大家分析一下为什么会这样的真正原因。

这是因为当执行 “mysql -root -p ”这个不带有-u的命令时,mysql命令把-root识别成了它的参数,而不是root这个用户。并且把root这个词识别成了四个参数,拆开来就是“-r -o -o -t”。

当不带有-u参数时,默认就是以root用户登录的。

所以当没有带-u参数时,整个命令其实是这样的:

#mysql -r -o -o -t -p -uroot //其中-uroot是隐式带上的

所以虽然没有带上-u参数,是可以登录成功的,而登录成功后,报错,是因为有-o这个参数造成的。

我们看看-o这个参数的解释:

-o,–one-database

Ignore statements except those that occur while the default database is the one named on the command line. This option is rudimentary and should be used with care. Statement filtering is based only on USE statements.

翻译过来就是,当带上-o参数时,会忽略sql语句,但如果在-o参数后面带上某数据库名,这个数据库可以排除在外,也就是这个数据库可以执行sql语句。

比如我们想登录数据库后,只能在mysql这个数据库执行命令sql命令,在其它数据库中都执行不了sql命令

# mysql -o mysql -p

mysql> use test

Database changed

mysql> show tables;

Ignoring query to other database

mysql> use mysql

Database changed

mysql> show tables;

+---------------------------+

| Tables_in_mysql |

+---------------------------+

| columns_priv |

| db |

| event |

| func |

| general_log |

| help_category |

| help_keyword |

| help_relation |

| help_topic |

| host |

| ndb_binlog_index |

| plugin |

| proc |

| procs_priv |

| proxies_priv |

| servers |

| slow_log |

| tables_priv |

| time_zone |

| time_zone_leap_second |

| time_zone_name |

| time_zone_transition |

| time_zone_transition_type |

| user |

+---------------------------+

24 rows in set (0.00 sec)

mysql> select * from test.test1;

+------+

| id |

+------+

| 1 |

+------+

1 row in set (0.00 sec)

mysql> use test

Database changed

mysql> select * from mysql.user;

Ignoring query to other database

mysql>

可以看出,当使用use切换到mysql数据库,就可以执行sql命令,当使用use切换到别的数据库下,就执行不了,会报错。

知道这个-o参数的作用后,我们就知道为什么前面登录后执行命令会报错了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值