AppSuite:Drop Stored Procedures

From Open-Xchange
Revision as of 08:52, 21 September 2015 by Choeger (talk | contribs)
This information is valid from 7.8.0 on.
Remove obsolete MySQL Stored Procedures from databases

Summary: This article tells you why and how to remove already existing but obsolete MySQL Stored Procedures from the various databases.

Why to manually remove the existing Stored Procedures?

The Stored Procedures mentioned within the next paragraph aren't needed any more by the Open-Xchange groupware. Because of the reduced privileges Open Xchange recommends with version 7.8.0 (see AppSuite:DB_user_privileges for more information) introduced due to security reasons the existing 'openexchange' database user isn't able to detect the existing Stored Procedures.

Which Stored Procedures are affected?

The following Stored Procedures have to be removed from your configured config database:

get_context_id, get_configdb_id

The following Stored Procedures have to be removed from the context schematas:

get_attachment_id, get_calendar_id, get_contact_id, get_folder_id, get_forum_id, get_gid_number_id, get_gui_setting_id, get_ical_id, get_infostore_id, get_mail_service_id, get_pinboard_id, get_principal_id, get_project_id, get_resource_group_id, get_resource_id, get_task_id, get_uid_number_id, get_unique_id, get_webdav_id

How to remove affected Stored Procedures?

Connect to mysql as a privileged user and run the following commands.

List all procedures owned/created by openexchange (assuming you did not change the default name of that account):

mysql> SELECT name,definer FROM mysql.proc WHERE definer LIKE "openexchange@%";
+-----------------------+------------------------+
| name                  | definer                |
+-----------------------+------------------------+
| get_context_id        | openexchange@localhost |
| get_configdb_id       | openexchange@localhost |
| get_gid_number_id     | openexchange@localhost |
| get_mail_service_id   | openexchange@localhost |
| get_infostore_id      | openexchange@localhost |
| get_forum_id          | openexchange@localhost |
| get_pinboard_id       | openexchange@localhost |
| get_gui_setting_id    | openexchange@localhost |
| get_ical_id           | openexchange@localhost |
| get_attachment_id     | openexchange@localhost |
| get_webdav_id         | openexchange@localhost |
| get_uid_number_id     | openexchange@localhost |
| get_unique_id         | openexchange@localhost |
| get_resource_id       | openexchange@localhost |
| get_resource_group_id | openexchange@localhost |
| get_principal_id      | openexchange@localhost |
| get_folder_id         | openexchange@localhost |
| get_calendar_id       | openexchange@localhost |
| get_contact_id        | openexchange@localhost |
| get_task_id           | openexchange@localhost |
| get_project_id        | openexchange@localhost |
+-----------------------+------------------------+
21 rows in set (0.00 sec)


If this list seems ok, delete these procedures using the command below:

mysql> DELETE FROM mysql.proc WHERE definer LIKE "openexchange@%";
Query OK, 21 rows affected (0.00 sec)