MySQL त्रुटि 1449: एक निश्चित के रूप में निर्दिष्ट उपयोगकर्ता मौजूद नहीं है


352

जब मैं निम्नलिखित प्रश्न चलाता हूं तो मुझे एक त्रुटि मिलती है:

SELECT
  `a`.`sl_id`                     AS `sl_id`,
  `a`.`quote_id`                  AS `quote_id`,
  `a`.`sl_date`                   AS `sl_date`,
  `a`.`sl_type`                   AS `sl_type`,
  `a`.`sl_status`                 AS `sl_status`,
  `b`.`client_id`                 AS `client_id`,
  `b`.`business`                  AS `business`,
  `b`.`affaire_type`              AS `affaire_type`,
  `b`.`quotation_date`            AS `quotation_date`,
  `b`.`total_sale_price_with_tax` AS `total_sale_price_with_tax`,
  `b`.`STATUS`                    AS `status`,
  `b`.`customer_name`             AS `customer_name`
FROM `tbl_supplier_list` `a`
  LEFT JOIN `view_quotes` `b`
    ON (`b`.`quote_id` = `a`.`quote_id`)
LIMIT 0, 30

त्रुटि संदेश है:

#1449 - The user specified as a definer ('web2vi'@'%') does not exist

मुझे वह त्रुटि क्यों मिल रही है? मैं इसे कैसे ठीक करूं?


7
हमें अपना शो 'व्यू_क्वोट्स ’देखें
jordeu

त्रुटि view_quotesदेखने की स्थिति में होनी चाहिए ।
शैल

इस क्षण के बारे में सोचने के बाद और कार्रवाई का सबसे सरल कोर्स लापता खाते को डेटाबेस में जोड़ना था और त्रुटि दूर हो गई। किसी जटिल प्रक्रिया की जरूरत नहीं। यदि आप खाता जोड़ सकते हैं तो पहले प्रयास करें।
user1794918

जवाबों:


539

यह आमतौर पर तब होता है जब एक डेटाबेस या सर्वर से किसी अन्य उपयोगकर्ता के विचारों / ट्रिगर / प्रक्रियाओं को निर्यात करने वाले उपयोगकर्ता के रूप में उस ऑब्जेक्ट का निर्माण होता है जो अब मौजूद नहीं है।

आपके पास दो विकल्प हैं:

1. DEFINER बदलें

DEFINERडंप से किसी भी बयान को हटाते हुए, अपने डेटाबेस ऑब्जेक्ट्स को शुरू में आयात करते समय यह संभवतः सबसे आसान है ।

बाद में निश्चित रूप से बदलना बहुत कम मुश्किल है:

विचारों के लिए परिभाषा कैसे बदलें

  1. आवश्यक कथन को उत्पन्न करने के लिए इस SQL ​​को चलाएँ

    SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
    table_name, " AS ", view_definition, ";") 
    FROM information_schema.views 
    WHERE table_schema='your-database-name';
  2. ALTER कथनों को कॉपी और चलाएं

संग्रहीत प्रक्रियाओं के लिए निश्चित रूप से कैसे बदलना है

उदाहरण:

UPDATE `mysql`.`proc` p SET definer = 'user@%' WHERE definer='root@%'

सावधान रहें, क्योंकि यह सभी डेटाबेस के लिए सभी परिभाषाओं को बदल देगा।

2. लापता उपयोगकर्ता बनाएँ

यदि आपको MySQL डेटाबेस का उपयोग करते समय त्रुटि मिली है:

The user specified as a definer ('someuser'@'%') does not exist`

तो आप निम्न का उपयोग करके इसे हल कर सकते हैं:

GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';
FLUSH PRIVILEGES;

से http://www.lynnnayko.com/2010/07/mysql-user-specified-as-definer-root.html

यह एक आकर्षण की तरह काम करता है - आपको केवल someuserलापता उपयोगकर्ता के नाम को बदलना होगा। एक स्थानीय देव सर्वर पर, आप आमतौर पर सिर्फ उपयोग कर सकते हैं root

यह भी विचार करें कि क्या आपको वास्तव में उपयोगकर्ता की ALLअनुमति देने की आवश्यकता है या क्या वे कम से कर सकते हैं।


1
और अनुदान विकल्प की आवश्यकता नहीं है।
helpse

@Simon पूर्व: आपने एक सुंदर संपादन किया है, इतना जवाब देने के लिए बहुत-बहुत धन्यवाद।
चोकोक्रोक

मैं जोड़ने का सुझाव देता हूं, "UPDATE mysqlprocP SET निश्चित = 'उपयोगकर्ता @%' को चलाने के बाद mySQL उदाहरण को फिर से शुरू करें । जहां तक ​​निश्चितता = 'रूट @%'" क्वेरी है क्योंकि प्रक्रियाओं के लिए केवल तब ही ताज़ा किया जाता है।
जोहान

1
मुझे लगता है कि अर्थहीन उपयोगकर्ताओं को जोड़ना आसान है, क्योंकि अगली बार जब आप एक dbdump करते हैं और इसे आयात करते हैं, तो आपको फिर से विचार / प्रक्रिया संपादन करने की आवश्यकता नहीं होगी
DarkMukke

1
धन्यवाद, मैंने अभी समस्या के साथ तालिका को गिरा दिया है, इसे हटा दिया है DEFINER=`user`@`host`और इसे फिर से आयात किया है। एक जादू की तरह काम किया। : ok_hand:
giovannipds

139

मूल रूप से SQL दृश्य या प्रक्रिया को बनाने वाले उपयोगकर्ता को हटा दिया गया है। यदि आप उस उपयोगकर्ता को फिर से बनाते हैं, तो उसे आपकी त्रुटि का पता लगाना चाहिए।


3
इसके अलावा आपको जोड़े गए उपयोगकर्ता को कम से कम SELECTऔर EXECUTEविशेषाधिकारों को देने की आवश्यकता होगी । जब मैं एक सर्वर से दूसरे सर्वर पर DB बैकअप का निर्यात करता था, तो मैं इसमें भाग गया, जहाँ रूटीन बनाने वाले उपयोगकर्ता का परीक्षण सर्वर पर अस्तित्व नहीं था।
drew010

5
धन्यवाद, यह मददगार था। अक्सर, माइस्क्लेम्प को उपयोग करने वाले उपयोगकर्ता को माइग्रेट करते या तैनात करते समय जो VIEW, TRIGGER या PROCEDURE (निश्चित) बनाया जाता है, वह लक्ष्य प्रणाली पर समान नहीं हो सकता है। उस मामले में, प्रक्रिया को DROPफिर CREATEसे बनाना, लक्ष्य प्रणाली पर एक वैध उपयोगकर्ता का उपयोग करके ट्रिगर या दृश्य ( फिर से ) करना चाहिए।
एरिक किगाठी

38
आप यह भी बदल सकते हैं कि कौन मौजूदा उपयोगकर्ता के लिए निश्चित है:UPDATE mysql.proc SET definer = 'my_new_user@localhost' WHERE db = 'mydatatbase';

1
वास्तव में मेरे मामले में मेरे पास ट्रिगर वाली एक तालिका थी जो एक DEFINER उपयोगकर्ता को इंगित कर रही थी जिसे हटा दिया गया था। ट्रिगर उपयोगकर्ता को अद्यतन करने से समस्या हल हो गई।
मिगेल

आपको उस उपयोगकर्ता को भी अनुमति देने की आवश्यकता है :) GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password'; FLUSH PRIVILEGES;
विक्टर

50

Mysql को अपडेट करने के बाद मुझे वही त्रुटि मिली।

इस आदेश के बाद त्रुटि ठीक हो गई है:

mysql_upgrade -u root

हर बार जब आप MySQL अपग्रेड करते हैं, तो mysql_upgrad को निष्पादित किया जाना चाहिए। यह MySQL सर्वर के वर्तमान संस्करण के साथ असंगतता के लिए सभी डेटाबेस में सभी तालिकाओं की जाँच करता है। यदि किसी तालिका में संभव असंगति पाई जाती है, तो इसकी जाँच की जाती है। यदि कोई समस्या पाई जाती है, तो तालिका की मरम्मत की जाती है। mysql_upgrade सिस्टम तालिकाओं को भी अपग्रेड करता है ताकि आप नए विशेषाधिकारों या क्षमताओं का लाभ उठा सकें जिन्हें जोड़ा जा सकता था।


यह निश्चित नहीं है कि यह मेरे लिए काम क्यों नहीं करता है, मुझे मैन्युअल रूप से mySQL कार्यक्षेत्र में सभी ट्रिगर्स को हटाना पड़ा।
user752746


34

इस तरह हटाए गए उपयोगकर्ता बनाएं:

mysql> create user 'web2vi';

या

mysql> create user 'web2vi'@'%';

3
उस मिस्ड उपयोगकर्ता को बनाने के बाद, एक और त्रुटि का सामना करना पड़ा: ERROR 1142 (42000): TRIGGER command denied to user 'web2vi'@'%' for table 'foo'और grant all on *.* to 'web2vi'@'%' identified by ''उपयोगकर्ता बनाने के बाद इस कमांड को जोड़ना चाहिए
zhuguowei

31

इन कदमों का अनुसरण करें:

  1. PHPMyAdmin पर जाएं
  2. अपने डेटाबेस का चयन करें
  3. अपनी तालिका का चयन करें
  4. शीर्ष मेनू पर 'ट्रिगर' पर क्लिक करें
  5. ट्रिगर को संपादित करने के लिए 'संपादित करें' पर क्लिक करें
  6. [User @ localhost] से रूट को बदलें @ localhost

आशा है ये मदद करेगा


1
उपयोगकर्ता बनाने और अनुमति देने के बजाय, यह प्रश्न का वास्तविक समाधान है। बस निश्चित बदलें।
अंकित चौहान

क्या डेटाबेस में सभी ट्रिगर ढूंढने का कोई तरीका है?
मृगेश मिस्त्री

1
सभी ट्रिगर ढूंढें: SHOW TRIGGERS
JerzySkalski

कमांड लाइन 'शो ट्रिगर्स' से, PhpMyAdmin से डेटाबेस का चयन करें और फिर
नवाब

21

समाधान नीचे के रूप में सिर्फ एक पंक्ति क्वेरी है:

grant all on *.* to 'ROOT'@'%' identified by 'PASSWORD' with grant option;

ROOTअपने mysql उपयोगकर्ता नाम के साथ बदलें । PASSWORDअपने mysql पासवर्ड से बदलें ।


1
सावधान रहें: MySQL उपयोगकर्ता संवेदनशील हैं।
एलेसियो कैंटरेला

मुझे इसके flush privilegesबाद की जरूरत है और यह काम करता है। धन्यवाद।
विक्टर

14

यह निम्न टिप्पणियों को चलाकर निश्चित किया गया।

grant all on *.* to 'web2vi'@'%' identified by 'root' with grant option;
FLUSH PRIVILEGES;

यदि आप some_otherइसके बजाय हो रहे हैं web2viतो आपको नाम तदनुसार बदलना होगा।


13

भविष्य के गोगलर्स के लिए: मुझे एक समान संदेश मिला जिसमें डेटाबेस में एक तालिका को अपडेट करने की कोशिश की गई जिसमें कोई दृश्य नहीं था। कुछ खुदाई के बाद, यह पता चला कि मैंने उस मेज पर ट्रिगर आयात किया था, और वे चीजें जो गैर-मौजूद उपयोगकर्ता द्वारा परिभाषित की गई थीं। ट्रिगर को छोड़ने से समस्या हल हो गई।


ट्रिगर मुद्दा था, मैंने ट्रिगर्स सेक्शन में निश्चित रूप से अपडेट किया। और कोई समस्या नहीं।
दारजी

धन्यवाद, यह बहुत उपयोगी है। इसके अलावा विचारों को अद्यतन करने की आवश्यकता है।
toxxxa

वास्तव में बहुत मददगार :) मुझे यह कभी नहीं मिलेगा।
एलचुपकाबरा

7

उपयोगकर्ता 'web2vi' आपके mysql सर्वर पर मौजूद नहीं है।

Http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html#error_er_no_such_user देखें

यदि वह उपयोगकर्ता मौजूद है, तो जांच लें कि वह किस सर्वर से पहुंच सकता है, हालांकि मैंने सोचा होगा कि एक अलग त्रुटि होगी (जैसे कि आपके पास web2vi @ localhost हो सकता है, लेकिन आप db को web2vi @% के रूप में एक्सेस कर रहे हैं (कुछ भी)


7

फ़ाइल को इधर-उधर डंप करने के लिए जल्दी ठीक करें:

mysqldump --single-transaction -u root -p xyz_live_db > xyz_live_db_bkup110116.sql

1
यह काम नहीं करता। डंप में निश्चित निहित है।
फिल्प २

यदि आप एक एक "डी" के बजाय "पी" के साथ mysqlpump उपयोग करते हैं, आप-definer --skip उपयोग कर सकते हैं
Wouter

@lyhong में मेरे पास विस्तृत विवरण नहीं है, लेकिन जाहिरा तौर पर --single-transactionडंप के दौरान लॉक टेबल्स को लागू करने के तरीके में बदलाव होता है। या कुछ इस तरह का। मुझे याद नहीं है कि मैंने इसे कहाँ पढ़ा था, लेकिन इससे मुझे "बस झंडा फेंकने" में सहज महसूस करने में मदद मिली। मैं भी बेपर्दा हूँ 'बस "इस" जवाब "करते हैं। किसी भी तरह से, यह मेरे मामले के लिए काम किया।
शेरिलहोमैन

7
grant all on *.* to 'username'@'%' identified by 'password' with grant option;

उदाहरण:

grant all on *.* to 'web2vi'@'%' identified by 'password' with grant option;

अगर मैं एक 'उपयोगकर्ता' @ 'सभी ips' को सभी विशेषाधिकार प्रदान करता हूं, तो सुरक्षा के बारे में क्या ??
मोहसेन अब्बासी

@MohsenAbasi यह विकास के माहौल के लिए एक उदाहरण है। यह उपयोगकर्ता सिस्टम प्रशासक हो सकता है। ठेस वाले वातावरण को अधिक सावधान रहने की जरूरत है।
मेसुतपिस्किन

7

डीबी को एक सर्वर से दूसरे सर्वर पर ले जाने के बाद मेरे साथ ऐसा हुआ। प्रारंभ में, निश्चित लोकलहोस्ट और उपयोगकर्ता का उपयोग कर रहा था। नए सर्वर पर हमारे पास वह उपयोगकर्ता नहीं है, और होस्ट को भी बदल दिया गया था। मैंने उस विशेष तालिका का बैक अप लिया और सभी ट्रिगर को मैन्युअल रूप से phpmyadmin से हटा दिया । उसके बाद यह मेरे लिए ठीक काम कर रहा है।


टिप के लिए धन्यवाद, मैं mySQL कार्यक्षेत्र में सभी ट्रिगर को मैन्युअल रूप से निकालने में सक्षम था।
user752746

यह वास्तव में मेरे लिए एक ट्रिगर समस्या थी, मुझे उन सभी को दूर करना और फिर से बनाना था
paul.ago

ट्रिगर को फिर से बनाने के अलावा और कोई उपाय नहीं है? मैं दिन में दो बार कभी-कभी टेस्ट डंप का उपयोग कर रहा हूं। यह मेरी मुख्य प्रक्रियाओं को बाधित करेगा
redestructa

@TS गुहान क्या आपने उन्हें मैन्युअल रूप से हटाने के बाद ट्रिगर जोड़ दिए?
मेलब्लेड

6

मुझे रूट उपयोगकर्ता ans के साथ भी यही समस्या थी जब मैंने प्रतिस्थापित किया

root@%

द्वारा

root@localhost

इसलिए, यदि उपयोगकर्ता 'web2vi' को 'लोकलहोस्ट' से कनेक्ट करने की अनुमति है, तो आप कोशिश कर सकते हैं:

web2vi@localhost

मैं डेटाबेस से दूरस्थ रूप से जुड़ा हुआ हूं।


4

मेरे 5 सेंट।

मेरे पास एक ही त्रुटि थी जब मैंने एक दृश्य से चयन करने का प्रयास किया।

हालाँकि समस्या यह प्रतीत होती है कि यह दृश्य, दूसरे दृश्य से चयनित है जिसे विभिन्न सर्वर से बैकअप से पुनर्स्थापित किया गया था।

और वास्तव में, हाँ, उपयोगकर्ता अमान्य था, लेकिन यह स्पष्ट नहीं था कि पहली नज़र कहाँ से है।


4

मेरे पास आपकी एक ही समस्या थी मिनटों पहले, मैं mysql.user तालिका से एक अप्रयुक्त उपयोगकर्ता को हटाने के बाद इस मुद्दे में भाग गया था, लेकिन इसे बदलने का एक दृश्य तय कर रहा है, यहां एक आसान कमांड है जो इसे बहुत सरल बनाता है:

SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ",
table_name," AS ", view_definition,";") FROM 
information_schema.views WHERE table_schema='databasename'

इसे mysql कमांड लाइन के साथ मिलाएं (यह मानते हुए * निक्स, विंडोज़ से परिचित नहीं):

> echo above_query | mysql -uuser -p > alterView.sql
> mysql -uuser -ppass databasename < alterView.sql

नोट: कमांड फाइल पर जेनरेट और एक्स्ट्रा सेलेक्ट कॉनसैट बनाता है, mysql -uuser -ppass databasename < alterView.sqlअगर आप इसे नहीं हटाते हैं तो यह विफल हो जाता है।

स्रोत: /dba/4129/modify-definer-on-many-views


4

के रूप में अपनी प्रक्रिया निर्धारित करने का प्रयास करें SECURITY INVOKER

Mysql डिफ़ॉल्ट सुरक्षा प्रक्रियाओं को "DEFINER" (निर्माता) के रूप में सेट करता है .. आपको सुरक्षा को "इनवॉकर" पर सेट करना होगा।


3

आपके विचार, "view_quotes" को एक अलग डेटाबेस से कॉपी किया जा सकता है, जहाँ "web2vi" एक डेटाबेस में एक वैध उपयोगकर्ता है जहाँ "web2vi" एक वैध उपयोगकर्ता नहीं है।
या तो डेटाबेस में "web2vi" उपयोगकर्ता जोड़ें या दृश्य को बदल दें (सामान्य रूप से DEFINER = 'web2vi' @ '%' भाग को हटा दें और स्क्रिप्ट निष्पादित करें)


3

मेरे मामले में, तालिका में एक DEFINER उपयोगकर्ता के साथ एक ट्रिगर था जो मौजूद नहीं था।


2
नाखून पर विशेष रूप से सही है जब एप्लिकेशन को एक सर्वर से दूसरे में स्थानांतरित किया जाता है
जार्डिलियर

2

से MySQL संदर्भ की CREATE VIEW:

DEFINER और SQL SECURITY क्लॉज़ेज सुरक्षा संदर्भ निर्दिष्ट करते हैं जिनका उपयोग तब किया जाता है, जब वे इनवॉइस समय पर एक्सेस विशेषाधिकारों की जाँच करते हैं।

यह उपयोगकर्ता मौजूद होना चाहिए और होस्टनाम के रूप में 'लोकलहोस्ट' का उपयोग करना हमेशा बेहतर होता है। इसलिए मुझे लगता है कि यदि आप जांचते हैं कि उपयोगकर्ता मौजूद है और इसे 'लोकलहोस्ट' में बदल दें तो यह देखने के लिए कि आपके पास यह त्रुटि नहीं होगी।


2

समस्या स्पष्ट है - MySQL उपयोगकर्ता को निर्दिष्ट के रूप में निर्दिष्ट नहीं कर सकता है।

मैंने विकास मॉडल से डेटाबेस मॉडल को सिंक्रनाइज़ करने, लोकलहोस्ट पर लागू करने, मॉडल में बदलाव करने और फिर इसे लोकलहोस्ट पर फिर से लागू करने के बाद इस समस्या का सामना किया। जाहिरा तौर पर वहाँ एक दृश्य (मैं संशोधित) परिभाषित किया गया था और इसलिए मैं अपने स्थानीय संस्करण को अपडेट नहीं कर सका।

कैसे तय करें (आसानी से) :

नोट: इसमें हटाना शामिल है, इसलिए यह दृश्यों के लिए ठीक काम करता है, लेकिन सुनिश्चित करें कि आपके पास टेबल पर यह प्रयास करने पर डेटा बैकअप है।

  1. डेटाबेस में रूट के रूप में लॉगिन करें (या जो भी परिवर्तन करने के लिए पर्याप्त शक्ति है)।
  2. दृश्य, तालिका या जो भी आपको परेशानी हो रही है, उसे हटाएं।
  3. अपने नए मॉडल को सिंक्रनाइज़ करें - यह उस चीज़ के बारे में शिकायत नहीं करेगा जो अब मौजूद नहीं है। आप SQL सुरक्षा DEFINER को निकालना चाह सकते हैं जिस आइटम परिभाषा में समस्या थी, भाग ।

पुनश्च यह न तो उचित है और न ही सबसे अच्छा है। मैंने इसे एक संभावित (और बहुत सरल) समाधान के रूप में पोस्ट किया है।


मैं toad का उपयोग कर रहा हूँ, cn i डिलीट कर रहा हूँ और फिर से प्रयोग कर रहा हूँ कि केवल os मुझे टर्मिनल से रोय के रूप में लॉगिन करना चाहिए और फिर केवल करना चाहिए ??
वसंत नाग केवी


2

मुझे वह त्रुटि क्यों मिल रही है? मैं इसे कैसे ठीक करूं?

मैंने इस तरह की समस्या के लिए निर्णय लेने से पहले एक घंटे का समय बिताया। लेकिन, मेरे मामले में, मैंने इसे चलाया:

mysql> UPDATE `users` SET `somefield` = 1 WHERE `user_id` = 2;
ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist

यदि आप वास्तव में समस्या का पता लगाना चाहते हैं, तो बस इस कमांड को एक-एक करके चलाएं:

SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
SHOW TRIGGERS;
SHOW FULL TABLES IN database_name WHERE TABLE_TYPE LIKE 'VIEW';

... और उनमें से प्रत्येक के बाद, क्षेत्र 'निश्चित' की तलाश करें।

मेरे मामले में यह पुराना ट्रिगर था, जिसे डेवलपर्स में से कोई भी हटाना भूल गया था।


1

एडिट रूटीन सेक्शन में जाएं और सबसे नीचे, सिक्योरिटी टाइप को डिफाइनर से इनवोकर में बदलें।


4
कहाँ जाये? किस सॉफ्टवेयर में?
kenorb

@kenorb, phpMyAdmin में आप MySQL संग्रहीत रूटीन (कार्यविधियाँ और कार्य), जैसे सुरक्षा प्रकार बदल सकते हैं।
मिकाल

1

एक या आपके कई विचार जहां किसी अन्य उपयोगकर्ता द्वारा बनाए / पंजीकृत किए गए हैं। आपको दृश्य के स्वामी की जांच करनी होगी और:

  1. उपयोगकर्ता को फिर से बनाना; जैसा कि अन्य उत्तर कहते हैं। या
  2. उन विचारों को फिर से बनाएँ, जहाँ उपयोगकर्ता द्वारा बनाए गए ALTER VIEW'web2vi' का उपयोग किया जाता है

मुझे एक बार यह समस्या हुई थी।

मैं SQLYog का उपयोग करते हुए, BD1 से BD2 तक विचारों को स्थानांतरित करने की कोशिश कर रहा था। SQLYog ने अन्य डेटाबेस (DB2) में विचारों को फिर से बनाया, लेकिन इसने BD1 के उपयोगकर्ता (वे जहां अलग हैं) को रखा। बाद में मुझे महसूस हुआ कि मेरी क्वेरी में जो दृश्य मैं उपयोग कर रहा था, उनमें भी वही त्रुटि थी, जबकि मैं कोई दृश्य नहीं बना रहा था।

उममीद है कि इससे मदद मिलेगी।


1

यदि यह एक संग्रहीत प्रक्रिया है, तो आप यह कर सकते हैं:

UPDATE `mysql`.`proc` SET definer = 'YournewDefiner' WHERE definer='OldDefinerShownBefore'

लेकिन यह सलाह नहीं है।

मेरे लिए, बेहतर समाधान निश्चित बनाने के लिए है:

create user 'myuser' identified by 'mypass';
grant all on `mytable`.* to 'myuser' identified by 'mypass';

आपके SQL सिंटैक्स में कोई त्रुटि है; उस मैनुअल को जांचें जो आपके MySQL सर्वर वर्जन से मेल खाता है, जो 'mytable' पर पास अनुदान का उपयोग करने के लिए सही सिंटैक्स के लिए है। * 'mypass' द्वारा पहचाने गए 'myuser' को; ' 1 लाइन पर
सेरिन

@Cerin, बस '' mytable के आसपास `` में बदलें। मेरे जवाब का उद्देश्य इस समस्या से
ग्रस्त

1

जब mysql.proc खाली है, लेकिन सिस्टम हमेशा टेबल_नाम के लिए "user@192.168.%" को नोटिस करता है, तो आप mysql कमांड लाइन में केवल रूट करते हैं और टाइप करते हैं:

CHECK TABLE `database`.`table_name` QUICK FAST MEDIUM CHANGED;
flush privileges;

ऊपर!


1

यह मेरे द्वारा विंडोज 10 पर MYSQL कार्यक्षेत्र 6.3 समुदाय के साथ एक डंप आयात करने के बाद हुआ, "रूट @% मौजूद नहीं है" के साथ। हालांकि उपयोगकर्ता मौजूद था। पहले मैंने DEFINER पर टिप्पणी करने की कोशिश की, लेकिन यह काम नहीं किया। मैंने फिर "रूट @ लोकलहोस्ट" के साथ "रूट @ %" पर एक स्ट्रिंग की और डंप को फिर से जोड़ा। इसने मेरे लिए चाल चली।



0

डेटाबेस उपयोगकर्ता भी केस-संवेदी लगता है, इसलिए जब मेरे पास रूट @ @% उपयोगकर्ता था, तो मेरे पास "%" उपयोगकर्ता नहीं था। मैंने उपयोगकर्ता को कार्यक्षेत्र के माध्यम से अपरकेस होने के लिए बदल दिया और समस्या हल हो गई!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.