Difference between revisions of "AppSuite:Drop Stored Procedures"

Line 23: Line 23:
 
== How to remove affected Stored Procedures? ==
 
== How to remove affected Stored Procedures? ==
  
As there seem to be no routine to remove multiple Stored Procedures for MySQL you have to remove the mentioned procedures one by one. Because of this please execute the following statements with a database user having the appropriate privileges for each procedure that should be removed. Consider executing the command on the correct database (config vs. context db).
+
Connect to mysql as a privileged user and run the following commands.
  
<code><pre>
+
List all procedures owned/created by openexchange (assuming you did not change the default
DROP PROCEDURE <THE_PROCEDURE_NAME>;  
+
name of that account):
</pre></code>
+
 
 +
<pre>
 +
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)
 +
</pre>
 +
 
 +
 
 +
If this list seems ok, delete these procedures using the command below:
 +
 
 +
<pre>
 +
mysql> DELETE FROM mysql.proc WHERE definer LIKE "openexchange@%";
 +
Query OK, 21 rows affected (0.00 sec)
 +
</pre>
  
  

Revision as of 08:52, 21 September 2015

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)