Mysql查询视图:ERROR 1449
来源:互联网 发布:网络博客游戏平台 编辑:程序博客网 时间:2024/05/01 14:51
1、问题重现
前几天因为有人删除了数据库中的记录,今天关闭了数据库的远程访问功能,今天接到开发报告,说出现 The user specified as a definer (‘air’@'%’) does not exist错误,他们定位是一张视图不能访问。利用实验重现了他们的情况
[root@ECP-UC-DB1 ~]# mysql -uxff -pxifenfei
Welcome
to
the MySQL monitor. Commands
end
with
;
or
\g.
Your MySQL
connection
id
is
8846
Server version: 5.5.14-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, 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>
select
user
,host
from
mysql.
user
;
+
------+---------------+
|
user
| host |
+
------+---------------+
| xff | % |
| root | 127.0.0.1 |
| repl | 192.168.11.10 |
| root | ::1 |
| | ECP-UC-DB1 |
| root | ECP-UC-DB1 |
| root | localhost |
+
------+---------------+
7
rows
in
set
(0.08 sec)
mysql> use xifenfei;
Reading
table
information
for
completion
of
table
and
column
names
You can turn
off
this feature
to
get a quicker startup
with
-A
Database
changed
mysql>
create
view
v_users
as
select
*
from
wp_users;
Query OK, 0
rows
affected (0.14 sec)
mysql>
select
count
(*)
from
xifenfei.v_users;
+
----------+
|
count
(*) |
+
----------+
| 2 |
+
----------+
1 row
in
set
(0.03 sec)
mysql>
update
mysql.
user
set
host=
'localhost'
where
user
=
'xff'
and
host=
'%'
;
Query OK, 1 row affected (0.05 sec)
Rows
matched: 1 Changed: 1 Warnings: 0
mysql> FLUSH
PRIVILEGES
;
Query OK, 0
rows
affected (0.12 sec)
mysql> exit
Bye
[root@ECP-UC-DB1 ~]# mysql -uxff -pxifenfei
Welcome
to
the MySQL monitor. Commands
end
with
;
or
\g.
Your MySQL
connection
id
is
8847
Server version: 5.5.14-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, 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> use xff;
ERROR 1049 (42000): Unknown
database
'xff'
mysql> use xifenfei;
Reading
table
information
for
completion
of
table
and
column
names
You can turn
off
this feature
to
get a quicker startup
with
-A
Database
changed
mysql>
select
*
from
v_users ;
ERROR 1449 (HY000): The
user
specified
as
a definer (
'xff'
@
'%'
) does
not
exist
2、解决方法
mysql> show databases;
+
--------------------+
|
Database
|
+
--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| xifenfei |
+
--------------------+
5
rows
in
set
(0.00 sec)
mysql> use information_schema;
Reading
table
information
for
completion
of
table
and
column
names
You can turn
off
this feature
to
get a quicker startup
with
-A
Database
changed
mysql>
desc
VIEWS;
+
----------------------+--------------+------+-----+---------+-------+
| Field | Type |
Null
|
Key
|
Default
| Extra |
+
----------------------+--------------+------+-----+---------+-------+
| TABLE_CATALOG |
varchar
(512) |
NO
| | | |
| TABLE_SCHEMA |
varchar
(64) |
NO
| | | |
| TABLE_NAME |
varchar
(64) |
NO
| | | |
| VIEW_DEFINITION | longtext |
NO
| |
NULL
| |
| CHECK_OPTION |
varchar
(8) |
NO
| | | |
| IS_UPDATABLE |
varchar
(3) |
NO
| | | |
| DEFINER |
varchar
(77) |
NO
| | | |
| SECURITY_TYPE |
varchar
(7) |
NO
| | | |
| CHARACTER_SET_CLIENT |
varchar
(32) |
NO
| | | |
| COLLATION_CONNECTION |
varchar
(32) |
NO
| | | |
+
----------------------+--------------+------+-----+---------+-------+
10
rows
in
set
(0.02 sec)
mysql>
select
TABLE_SCHEMA,TABLE_NAME,DEFINER
from
views;
+
--------------+------------+---------+
| TABLE_SCHEMA | TABLE_NAME | DEFINER |
+
--------------+------------+---------+
| xifenfei | v_users | xff@% |
+
--------------+------------+---------+
1 row
in
set
(0.16 sec)
mysql>
create
or
replace
view
v_users
as
select
*
from
wp_users;
ERROR 1044 (42000): Access denied
for
user
'xff'
@
'localhost'
to
database
'information_schema'
mysql>
create
or
replace
view
xifenfei.v_users
as
select
*
from
xifenfei.wp_users;
Query OK, 0
rows
affected (0.02 sec)
mysql>
select
TABLE_SCHEMA,TABLE_NAME,DEFINER
from
views;
+
--------------+------------+---------------+
| TABLE_SCHEMA | TABLE_NAME | DEFINER |
+
--------------+------------+---------------+
| xifenfei | v_users | xff@localhost |
+
--------------+------------+---------------+
1 row
in
set
(0.01 sec)
mysql>
select
count
(*)
from
xifenfei.v_users;
+
----------+
|
count
(*) |
+
----------+
| 2 |
+
----------+
1 row
in
set
(0.03 sec)
3、原因分析
因为创建视图使用的是xff@%用户(目前已经不存在),然后登录用户使用的是xff@localhost用户,导致mysql认为现在的用户无权限访问该视图,解决方法就是在当前用户下重建该视图
- Mysql查询视图:ERROR 1449
- ERROR 1449 (HY000)--Mysql查询视图报错
- mysql视图查询
- Mysql 创建查询视图
- mysql查询表和 视图信息
- MySQL:内联视图与标量子查询
- mysql关于视图、子查询、事物
- mysql:day2--复杂查询、模糊查询、创建视图、聚合函数
- mysql 视图1449错误
- 视图查询
- Mysql 多个子查询 多个LEFT JOIN 视图创建
- mysql查询存储过程和函数、视图、触发器
- Mysql 多个子查询 多个LEFT JOIN 视图创建
- MySQL第二天--where条件查询、视图及函数
- mysql视图创0建,分组查询第一条记录
- mysql创建视图包含子查询的解决方法
- MySQL第三章-查询事务、视图、索引、数据库设计
- mysql 查询表,视图,触发器,函数,存储过程
- 手势
- Magnific Popup文档翻译(1)
- java URLEncoder String.replaceAll
- Text Kit 入门和进阶
- UIPanGestureRecognizert拖拽手势
- Mysql查询视图:ERROR 1449
- ecside二次笔摘
- 深入理解Flex的事件机制
- NSNotification
- Nodejs - Buffer
- Linux修改IP和DNS
- 伪指令LTORG
- 线程同步--使用信号量
- 异常总结