MySQL error 1449: The user specified as a definer does not exist
Asked Answered
B

41

486

When I run the following query I get an error:

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

The error message is:

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

Why am I getting that error? How do I fix it?

Boscage answered 16/4, 2012 at 7:8 Comment(8)
Show us your SHOW CREATE VIEW 'view_quotes'Lemire
The error must be in where condition of view_quotes view.Aman
After thinking about this a moment and the simplest course of action was to add the missing account to the database and the error went away. No complicated procedure needed. If you can add the account then try that first.Tineid
I had same error when I was trying restore some views, I remove "DEFINER=root@%" form onlyViews.sql file that I had, and problem solved. If you have very big .sql file you can open and edit it through specefiv file editors.Toname
its easier to simply create the user!Abhenry
I had this issue simply as a triggerMatusow
I had this issue simply as a trigger when insertingMatusow
Why definer needs to be defined to do any simple db changes, who designs that stuff this way.Assentation
H
760

This commonly occurs when exporting views/triggers/procedures from one database or server to another as the user that created that object no longer exists.

You have two options:

1. Change the DEFINER

This is possibly easiest to do when initially importing your database objects, by removing any DEFINER statements from the dump.

Changing the definer later is a more little tricky:

How to change the definer for views

  1. Run this SQL to generate the necessary ALTER statements

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

  2. Copy and run the ALTER statements

How to change the definer for stored procedures

Example:

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

Be careful, because this will change all the definers for all databases.

2. Create the missing user

If you've found following error while using MySQL database:

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

Then you can solve it by using following :

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

MariaDb version:

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

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

This worked like a charm - you only have to change someuser to the name of the missing user. On a local dev server, you might typically just use root.

Also consider whether you actually need to grant the user ALL permissions or whether they could do with less.

Helluva answered 31/10, 2013 at 12:58 Comment(19)
. and grant option are not required.Piccadilly
@Simon East: You have made a lovely editing, thank you very much for improving so much the answer.Helluva
I suggest adding, restart mySQL instance after running the "UPDATE mysql.proc p SET definer = 'user@%' WHERE definer='root@%'" query since the definers to the procedures are only refreshed then.Carpetbagger
I think it's easier to add a meaningless users, because the next time you do a dbdump and import it, you wont need to do the views/procedures editing againSour
@anon, if you want to add how to do it with MySQL Workbench, please, do it in another answer and link it here on the comments, or as an update bellow the main body of the answer. Otherwise, it's opening the door to anyone explaining how to do it with his/her favorite tool.Helluva
Add backticks around view name, justi n case it has spaces (legal in MySQL).Marleenmarlen
Thank you so much, this solved it for me. (solution number 2 in your answer!)Solley
Thanks, I've just dropped the table with the problem, removed the DEFINER=`user`@`host` and re-imported it. Worked like a charm. :ok_hand:Action
For me the user who created the trigger was missing so updating the trigger with an existing user resolved the issue. ThanksIndopacific
second step worked fo me - simple and effective thanksAylmer
Thank you! I used the second option (2. Create the missing user). Saved my life!Underlinen
Almost complete: Part I needs similar stanza for triggers table.Torchier
for mysql version 8.0.21 it throws syntax error because of IDENTIFIED BY 'complex-password'.Studdingsail
For MySQL 8.0.22 I get ERROR 1146 (42S02): Table 'mysql.proc' doesn't exist when executing the above commands.Wheat
As mentioned by @Torchier the answer is incomplete. DEFINER can be a part of not only VIEWS and ROUTINES, but also EVENTS and TRIGGERS. To see where the missing definer is used you may use this query: SELECT DEFINER,'events' FROM INFORMATION_SCHEMA.EVENTS union SELECT DEFINER,'routines' FROM INFORMATION_SCHEMA.ROUTINES union SELECT DEFINER,'triggers' FROM INFORMATION_SCHEMA.TRIGGERS union SELECT DEFINER, 'views' FROM INFORMATION_SCHEMA.VIEWS; Lab
Starting with MySQL 8 you no longer can (implicitly) create a user using the GRANT command. See this thread https://mcmap.net/q/80981/-how-to-grant-all-privileges-to-root-user-in-mysql-8-0Uproar
I use sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i dumpfile.sql to remove the definerGamesome
I still get "The user specified as a definer xy does not exist" after executing the ALTER statement which was generated with your SQL.Thiazole
I get the same error locally, but my user exist and have trigger and super privileges enabled.Disassemble
B
159

The user who originally created the SQL view or procedure has been deleted. If you recreate that user, it should address your error.

Bushel answered 1/5, 2012 at 17:8 Comment(5)
In addition you will need to grant at least the SELECT and EXECUTE privileges to the added user. I ran into this when I exported a DB backup from one server to another where the user that created the routines didn't exist on the test server.Elissaelita
Thanks, this was helpful. Often, when migrating or deploying using mysqldump the user that created the VIEW, TRIGGER or PROCEDURE (the definer) may not be the same on the target system. In that case just recreating the procedure, trigger or view (DROP then re-CREATE) using a valid user on the target system should do the trick.Salomo
you can also change who the definer is to an existing user: UPDATE mysql.proc SET definer = 'my_new_user@localhost' WHERE db = 'mydatatbase';Saccharate
Exactly in my case i had a table with trigger that was pointing to a DEFINER user that was deleted. Updating the trigger user solved the problem.Ottavia
You also need to give permission to that user :) GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password'; FLUSH PRIVILEGES;Underlinen
M
62

Follow these steps:

  1. Go to PHPMyAdmin
  2. Select Your Database
  3. Select your table
  4. On the top menu Click on 'Triggers'
  5. Click on 'Edit' to edit trigger
  6. Change definer from [user@localhost] to root@localhost

Hope it helps

Mesocarp answered 1/3, 2016 at 5:0 Comment(6)
This is the actual solution to the question, rather than creating user and grant permission. just change the definer.Holophrastic
Is there any way to find all triggers in database ?Sporocyte
Find all triggers: SHOW TRIGGERSGimlet
From the command line 'show triggerss', from PhpMyAdmin select the database and then on the top right of navbar click on the triggersMesocarp
by this approach if u have multiple triggers u need to modify and update all those triggers better approach is to create the user and give the privileges and doneMireille
This is really helpful. Best and easy solution.Effectuate
T
53

I got the same error after updating mysql.

The error has been fixed after this command:

mysql_upgrade -u root

mysql_upgrade should be executed each time you upgrade MySQL. It checks all tables in all databases for incompatibilities with the current version of MySQL Server. If a table is found to have a possible incompatibility, it is checked. If any problems are found, the table is repaired. mysql_upgrade also upgrades the system tables so that you can take advantage of new privileges or capabilities that might have been added.

Tassel answered 23/7, 2018 at 20:6 Comment(4)
Not sure why this did not work for me, I had to manually remove all the triggers in mySQL workbench.Hooknose
When I ran the command, I got the below message on the console. The mysql_upgrade client is now deprecated. The actions executed by the upgrade client are now done by the server.Earthiness
Upgrading from MySQL 5.6 to MySQL 5.7.33, this command did the job and solved the issue ! Thanks for this solution. This is much simpler and reassuring than tampering with the db information schema. Too bad that (on Ubuntu 20.04) the package upgrade does not natively perform this command after each upgrade of MySQL binaries...Doncaster
it is not advisable to run this on mariaDB, we have issue after running thatProtoplasm
M
42

Create the deleted user like this :

mysql> create user 'web2vi';

or

mysql> create user 'web2vi'@'%';
Medorra answered 18/5, 2014 at 12:44 Comment(1)
after create that missed user, encountered another error: ERROR 1142 (42000): TRIGGER command denied to user 'web2vi'@'%' for table 'foo' and should add this command grant all on *.* to 'web2vi'@'%' identified by '' after creating userGlider
F
39

If the user exists, then:

mysql> flush privileges;
Fervid answered 9/1, 2013 at 21:24 Comment(0)
L
29

Solution is just a single line query as below :

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

Replace ROOT with your mysql user name. Replace PASSWORD with your mysql password.

Lodgings answered 26/9, 2016 at 11:27 Comment(2)
Be careful: MySQL users are case sensitive.Airplane
I needed to flush privileges after this and it works. Thanks.Propeller
C
19

Fixed by running this following comments.

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

if you are getting some_other instead of web2vi then you have to change the name accordingly.

Coquille answered 27/1, 2016 at 19:23 Comment(0)
A
15

For future googlers: I got a similar message trying to update a table in a database that contained no views. After some digging, it turned out I had imported triggers on that table, and those were the things defined by the non-existant user. Dropping the triggers solved the problem.

Artiste answered 27/11, 2014 at 7:31 Comment(3)
Triggers was the issue, I updated the definer in the triggers section. no more issues.Eudy
Thanks, it's very helpful. Also need to update views.Highbrow
Indeed very helpful :) I would never find that alone.Virgievirgil
D
14

quick fix to work around and dump the file:

mysqldump --single-transaction -u root -p xyz_live_db > xyz_live_db_bkup110116.sql
Demerit answered 11/1, 2016 at 11:17 Comment(4)
this does not work. the definer is contained in the dump.Costumier
If you use mysqlpump with a "p" instead of a "d", you can use --skip-definerPimply
@lyhong I don't have a detailed explanation, but apparently --single-transaction changes the way Lock Tables is implemented during a dump. Or something like that. I don't remember where I read it, but that helped me feel comfortable with "just throwing the flag in". I'm also uneasy with unexplained 'just do this' "answers". Either way, it worked for my case.Baboon
The --single-transaction seems to resolve my issueKhalil
N
12
grant all on *.* to 'username'@'%' identified by 'password' with grant option;

example:

grant all on *.* to 'web2vi'@'%' identified by 'password' with grant option;
Nahuatl answered 22/5, 2017 at 16:32 Comment(2)
If I grant all privileges to a 'user' @ 'all ips', then what about security??!!Bulldozer
@MohsenAbasi This is an example for the development environment. This user can be the system administrator. The prod environment needs to be more careful.Nahuatl
D
9

I had the same problem with root user ans it worked for me when I replaced

root@%

by

root@localhost

So, if the user 'web2vi' is allowed to connect from 'localhost', you can try:

web2vi@localhost

I'm connected remotely to the database.

Der answered 9/10, 2013 at 18:52 Comment(0)
L
8

The user 'web2vi' does not exist on your mysql server.

See http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html#error_er_no_such_user

If that user does exist, check what servers it can access from, although I would have thought that would be a different error (EG you might have web2vi@localhost, but you are accessing the db as web2vi@% (At anything)

Lithic answered 16/4, 2012 at 7:27 Comment(0)
M
7

Why am I getting that error? How do I fix it?

I spent a hour before found a decision for a problem like this. But, in my case, I ran this:

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

If you really want to find the problem, just run this commands one by one:

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

...and, after each of them, look for the field 'definer'.

In my case it was bearded old trigger, that somebody of developers forgot to delete.

Maroon answered 2/12, 2015 at 15:27 Comment(0)
J
7

This happened to me after moving the DB from one server to another server. Initially, the definer was using localhost and the user. On the new server we don't have that user, and host had also been changed. I took a back up of that particular table and removed all the triggers manually from phpmyadmin. After that it has been working fine for me.

Jung answered 14/9, 2018 at 10:39 Comment(4)
Thanks for the tip, I was able to manually remove all the triggers in mySQL workbench.Hooknose
This was indeed a trigger problem for me, I had to remove and recreate them allStiver
is there any other solution than recreating triggers? i'm using test dumps sometimes twice a day. this would disrupt my main processesSlingshot
@TS Guhan did you re-add the triggers after you removed them manually?Devon
H
4

I had your very same problem minutes ago, I ran into this issue after deleting an unused user from mysql.user table, but doing an alter view fixed it, here is a handy command that makes it very simple:

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

Mix this with the mysql command line (assuming *nix, not familiar with windows):

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

Note: the command generates and extra SELECT CONCAT on the file, making mysql -uuser -ppass databasename < alterView.sql fail if you don't remove it.

Source: https://dba.stackexchange.com/questions/4129/modify-definer-on-many-views

Hypozeuxis answered 18/10, 2012 at 16:42 Comment(0)
I
4

My 5 cents.

I had same error while I tried to select from a view.

However problem appears to be that this view, selected from another view that was restored from backup from different server.

and in fact, YES, user was invalid, but was not obvious where to from the first look.

Interfile answered 23/8, 2013 at 6:20 Comment(0)
S
4

Try to set your procedure as SECURITY INVOKER

Mysql default sets procedures security as "DEFINER" (CREATOR OF).. you must set the security to the "invoker".

Springspringboard answered 28/4, 2015 at 13:16 Comment(0)
D
4

You can change the definer for a specific database to an existing user:

UPDATE mysql.proc SET definer = 'existing_user@localhost' WHERE db = 'database_name';
Dame answered 22/6, 2021 at 11:7 Comment(0)
L
3

From MySQL reference of CREATE VIEW:

The DEFINER and SQL SECURITY clauses specify the security context to be used when checking access privileges at view invocation time.

This user must exist and is always better to use 'localhost' as hostname. So I think that if you check that the user exists and change it to 'localhost' on create view you won't have this error.

Lemire answered 16/4, 2012 at 7:28 Comment(0)
M
3

The problem is clear - MySQL cannot find user specified as the definer.

I encountered this problem after synchronizing database model from development server, applying it to localhost, making changes to the model and then reapplying it to localhost. Apparently there was a view (I modified) defined and so I couldn't update my local version.

How to fix (easily):

Note: it involves deleting so it works just fine for views but make sure you have data backed-up if you try this on tables.

  1. Login to database as root (or whatever has enough power to make changes).
  2. Delete view, table or whatever you are having trouble with.
  3. Synchronize your new model - it will not complain about something that does not exist now. You may want to remove SQL SECURITY DEFINER part from the item definition you had problems with.

P.S. This is neither a proper nor best-all-around fix. I just posted it as a possible (and very simple) solution.

Morphology answered 25/12, 2012 at 15:4 Comment(2)
i am using toad, cn i delete and recreate using that only os should i login as rooy from terminal and then only do??Meteorite
Went through all other answers, more errors to deal with with no time for it. Needed a very quick solution. At the end, I've removed all the useless triggers, don't need them anyway on the dev env (db imported from prod), and it worked. Why these stupid errors prevent user from doing any simple db updates. It's nonsense.Assentation
B
3

Your view, view_quotes may have been copied from a different database where web2vi is a valid user into a database where web2vi is not a valid user. Either add the web2vi user to the database or alter the view (normally removing the DEFINER='web2vi'@'%' part and executing the script will do the trick)

Blare answered 31/7, 2013 at 15:32 Comment(0)
U
3

In my case, the table had a trigger with a DEFINER user that didn't exist.

Unfrequented answered 25/2, 2015 at 7:41 Comment(1)
right on the nail specially when the app is transfered from a server to another oneConsiderate
R
2

You can try this:

$ mysql -u root -p 
> grant all privileges on *.* to `root`@`%` identified by 'password'; 
> flush privileges;
Rounder answered 21/4, 2015 at 4:5 Comment(0)
N
2

Try the following:

mysqldump --routines --single-transaction -u root -proot portalv3 > c:\portal.sql
Nelle answered 12/2, 2016 at 18:45 Comment(1)
This answer could use some explanation. What does this statement do, in which environment must it be executed, what does it solve, what should be done next?Decorative
W
2

For me, removing the '' from the DEFINER did the trick.
DEFINER = user@localhost

Wellmeaning answered 29/8, 2021 at 9:26 Comment(0)
H
1

Go into the edit routine section and and at the bottom, change Security Type from Definer to Invoker.

Hilleary answered 30/4, 2012 at 19:0 Comment(2)
Go to where? In which software?Assentation
@kenorb, in phpMyAdmin you can change MySQL stored routines (procedures and functions), e.g. Security Type.Gass
D
1

One or several of your views where created/registered by another user. You'll have to check the owner of the view and:

  1. Recreate the user; as the other answers say. or
  2. Recreate the views that where created by the user 'web2vi' using ALTER VIEW

I had this problem once.

I was trying to migrate views, from BD1 to BD2, using SQLYog. SQLYog recreated the views in the other DataBase (DB2), but it kept the user of BD1 (they where different). Later I realized that the views I was using in my query were having the same error as you, even when I wasn't creating any view.

Hope this help.

Digestif answered 7/8, 2013 at 19:53 Comment(0)
P
1

If this is a stored procedure, you can do:

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

But this is not advised.

For me, better solution is to create the definer:

create user 'myuser' identified by 'mypass';
grant all on `mytable`.* to 'myuser' identified by 'mypass';
Piccadilly answered 5/6, 2014 at 5:4 Comment(2)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'grant all on 'mytable'.* to 'myuser' identified by 'mypass';' at line 1Promise
@Cerin, Just change '' around mytable to ``. My answer aims to help people with this problem.. Think of reconsidering your downvote..Piccadilly
G
1

when mysql.proc is empty, but system always notice "[email protected].%" for table_name no exist,you just root in mysql command line and type:

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

over!

Garibay answered 14/9, 2015 at 9:38 Comment(0)
W
1

in my case I had a trigger on that table that I could not update data getting the same error.

MySQL error 1449: The user specified as a definer does not exist

the solution was to delete the triggers on that table and recreate them again, this fixed the issue, since the the trigger was made with another user from another server, and the user name changed on the new server after changing hosting company . that's my 2 cents

Wilen answered 7/12, 2015 at 15:16 Comment(0)
E
1

i came here for the same problem, i couldn't find anywhere in my code where a certain user was making the action. apparently it was from a trigger that was using a user which was long deleted (db was restored from an older version) so in case you are puzzled as i were, take a look at your db events/triggers/routines. hope this will help someone.

Eaton answered 25/1, 2016 at 14:17 Comment(0)
F
1

This happened to me after I imported a dump on Windows 10 with MYSQL Workbench 6.3 Community, with "root@% does not exist". Even though the user existed. First I tried to comment out the DEFINER however, this did not work. I then did a string replace on "root@%" with "root@localhost" and reimported the dump. This did the trick for me.

Frumpish answered 5/12, 2016 at 6:51 Comment(0)
E
1

I have tried the above methods, but feels like repetitive action when creating the view. I got the same issue while updating the views of the imported database.

You can simply overcome the issue in LOCAL by simply creating the User with the create privilege.

Ebberta answered 27/1, 2021 at 8:27 Comment(0)
L
0

The database user also seems to be case-sensitive, so while I had a root'@'% user I didn't have a ROOT'@'% user. I changed the user to be uppercase via workbench and the problem was resolved!

Lattie answered 14/5, 2015 at 12:33 Comment(0)
F
0

As addition, to change definer for TRIGGERS (ALTER does not work), you can do it like this:

Generate a DROP and a CREATE command for every Trigger:

SELECT CONCAT("DROP TRIGGER ", trigger_name, ";", " CREATE TRIGGER ", TRIGGER_NAME, " AFTER ", EVENT_MANIPULATION, " ON ", EVENT_OBJECT_SCHEMA, ".", EVENT_OBJECT_TABLE, " FOR EACH ROW ", ACTION_STATEMENT, ";") AS sqlCommand FROM information_schema.triggers WHERE EVENT_OBJECT_SCHEMA = "yourdatabase";

Execute it in a foreach. I use this in my app when I take the production database to my development machine and go it with a foreach over all commands and recreate the triggers automatically. This gives me the option to automate it.

Example in PHP/Laravel:

    $this->info('DROP and CREATE TRIGGERS');
    $pdo = DB::connection()->getPdo();
    $sql = 'SELECT CONCAT("DROP TRIGGER ", trigger_name, ";", " CREATE TRIGGER ", TRIGGER_NAME, " AFTER ", EVENT_MANIPULATION, " ON ", EVENT_OBJECT_SCHEMA, ".", EVENT_OBJECT_TABLE, " FOR EACH ROW ", ACTION_STATEMENT, ";") AS sqlCommand FROM information_schema.triggers WHERE EVENT_OBJECT_SCHEMA = "mydatabase";';
    $stmt = $pdo->prepare($sql, [PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true]);
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $stmt->closeCursor();

    foreach($result as $rs){
        $pdo = DB::unprepared($rs['sqlCommand']);
        break;
    }

Hint: I have to do it with pdo because of the mysql buffer query problem, described here

Fossette answered 20/6, 2018 at 8:1 Comment(0)
C
0

In my case, deleting all the views solved the issue.

DROP VIEW view_name;
Chihuahua answered 28/10, 2020 at 19:2 Comment(0)
L
0

I it is too late to answer, but this works for me. My scenario is I exported a function from the production db, and then imported it on my local machine. Now, what I did to make it work are:

  1. Copy the whole sql code of the function.
  2. Delete the imported function on your local machine.
  3. Create a new function on your local machine.
  4. Paste the code that you copied.

P.S. You can also just copy the code from production, and follow Step 3-4.

Lightfingered answered 29/5, 2023 at 8:13 Comment(0)
R
-1

Try this This is simple solution

mysql -u root -p
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

more at https://mcmap.net/q/80983/-1055-expression-of-select-list-is-not-in-group-by-clause-and-contains-nonaggregated-column-this-is-incompatible-with-sql_mode-only_full_group_by

Raquel answered 18/5, 2019 at 13:19 Comment(1)
This didn't do anything for me. I suggest you add in which cases it does and does not work.Bleach
P
-2

you can create user with name web2vi and grant all privilage

Poleyn answered 24/9, 2016 at 14:37 Comment(2)
Better to just grant the privileges that are actually needed.Hippocrates
Thank you for this solution. This solved the problem for me on MySQL 8, I just created the missing user. In this case I can use the user that was created but you can always delete the user after you are done with whatever it is you are working on that checks for the user.Mcgann
B
-2

// update all or particular procedures to your wanted, use existing user (my case -root)

1) UPDATE mysql.proc p SET definer = 'root@%' WHERE 1=1 LIMIT 1000; (limit clause is for the reason that various mysql versions complains when is updated not restricted with limit or no where condition is used)

2) FLUSH PRIVILEGES; // or restart the server

Boutte answered 8/7, 2019 at 21:49 Comment(1)
how can I vote my reply? The 3rd time this solution helped to solve me this issue when I came back here, though I ll check once more if there are not similar repliesBoutte

© 2022 - 2024 — McMap. All rights reserved.