[Maria-developers] When SP DEFINER is empty.
Hi, Sergey, all. I'm in doubts about how this one should be fixed: https://jira.mariadb.org/browse/MDEV-10119 The story goes like this: - mysql_install_db script runs 'mysqld --skip-grant-tables' In this case the 'current_user()' seems to be empty. - so the CREATE PROCEDURE command in the bootstrap creates the procedure with the empty DEFINER. - as a result, the 'SHOW CREATE PROCEDURE' returns query started with 'CREATE DEFINER=`` PROCEDURE...', - that DEFINER=`` gives an error when feed to the server. That can be fixed on any stage. We can do any of these: - set some 'current_user()' to be not empty even with the --skip-grant-tables option - specify some non-empty DEFINER for the CREATE PROCEDURE statement (in both options it's not that clear what user could that be) - fix the SHOW CREATE PROCEDURE statement so it doesn't add the errorneous DEFINER=`` to the query. - make server handling the 'DEFINER=``' with no error. Maybe assigning the 'current_user()' in this case. So, what can You recommend as a fix in this case? Best regards. HF
Hi, Alexey! I think, specify a non-empty DEFINER explicitly. Doesn't matter which one, it's mysql_install_db, so there are few definers that are guaranteed to exist (as they are created by mysql_install_db itself), use one of those, for example, root@localhost. Those procedures are SQL SECURITY INVOKER anyway. On Jun 25, Alexey Botchkov wrote:
I'm in doubts about how this one should be fixed:
https://jira.mariadb.org/browse/MDEV-10119
The story goes like this:
- mysql_install_db script runs 'mysqld --skip-grant-tables'
In this case the 'current_user()' seems to be empty.
- so the CREATE PROCEDURE command in the bootstrap creates the procedure with the empty DEFINER.
- as a result, the 'SHOW CREATE PROCEDURE' returns query started with
'CREATE DEFINER=`` PROCEDURE...',
- that DEFINER=`` gives an error when feed to the server.
That can be fixed on any stage. We can do any of these:
- set some 'current_user()' to be not empty even with the --skip-grant-tables option
- specify some non-empty DEFINER for the CREATE PROCEDURE statement
(in both options it's not that clear what user could that be)
- fix the SHOW CREATE PROCEDURE statement so it doesn't add the errorneous DEFINER=`` to the query.
- make server handling the 'DEFINER=``' with no error. Maybe assigning the 'current_user()' in this case.
So, what can You recommend as a fix in this case?
Best regards. HF
Regards, Sergei Chief Architect MariaDB and security@mariadb.org
participants (2)
-
Alexey Botchkov
-
Sergei Golubchik