MariaDB Benutzer umbenennen um den Zugriff einzuschränken

MariaDB Benutzer umbenennen um den Zugriff einzuschränken

avatar

Nach dem ein SQL Benutzer umbenannt wurde, um den Zugriff einzuschränken, können Objekte nicht mehr bearbeitet, gelöscht oder verschoben werden.

User wurde mit "rename user 'Benutzer'@'%' to 'Benutzer'@'IP-Adresse';" umbenannt

MySqlConnector.MySqlException (0x80004005): The user specified as a definer ('Benutzer'@'%') does not exist ---> MySqlConnector.MySqlException (0x80004005): The user specified as a definer ('Benutzer'@'%') does not exist
  at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync (MySqlConnector.Protocol.Serialization.IOBehavior ioBehavior) [0x000b0] in <a77084e444c944289e28ad2a40b4a263>:0
  at MySqlConnector.MySqlDataReader.ActivateResultSet () [0x00079] in <a77084e444c944289e28ad2a40b4a263>:0
  at (wrapper remoting-invoke-with-check) MySqlConnector.MySqlDataReader.ActivateResultSet()
  at MySqlConnector.MySqlDataReader.CreateAsync (MySqlConnector.Core.CommandListPosition commandListPosition, MySqlConnector.Core.ICommandPayloadCreator payloadCreator, System.Collections.Generic.IDictionary`2[TKey,TValue] cachedProcedures, MySqlConnector.Core.IMySqlCommand command, System.Data.CommandBehavior behavior, MySqlConnector.Protocol.Serialization.IOBehavior ioBehavior, System.Threading.CancellationToken cancellationToken) [0x0023f] in <a77084e444c944289e28ad2a40b4a263>:0
  at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync (System.Collections.Generic.IReadOnlyList`1[T] commands, MySqlConnector.Core.ICommandPayloadCreator payloadCreator, System.Data.CommandBehavior behavior, MySqlConnector.Protocol.Serialization.IOBehavior ioBehavior, System.Threading.CancellationToken cancellationToken) [0x003ba] in <a77084e444c944289e28ad2a40b4a263>:0
  at MySqlConnector.MySqlCommand.ExecuteNonQueryAsync (MySqlConnector.Protocol.Serialization.IOBehavior ioBehavior, System.Threading.CancellationToken cancellationToken) [0x0008e] in <a77084e444c944289e28ad2a40b4a263>:0
  at MySqlConnector.MySqlCommand.ExecuteNonQuery () [0x00012] in <a77084e444c944289e28ad2a40b4a263>:0
  at Devolutions.RemoteDesktopManager.Business.DataSources.DatabaseConnectionDataSource.ExecuteNonQuery (System.String sql, System.Data.IDbTransaction dbTransaction, System.Data.IDbDataParameter[] parameters, System.Int32 commandTimeout) [0x0005b] in <b09d76960b8141528d469666de90947b>:0
  at Devolutions.RemoteDesktopManager.Business.DataSources.DatabaseConnectionDataSource.DeleteConnection (Devolutions.RemoteDesktopManager.Business.Connection connection, System.Data.IDbTransaction dbTransaction) [0x000f0] in <b09d76960b8141528d469666de90947b>:0
  at Devolutions.RemoteDesktopManager.Business.DataSources.DatabaseConnectionDataSource.DeleteConnection (Devolutions.RemoteDesktopManager.Business.Connection connection) [0x0005d] in <b09d76960b8141528d469666de90947b>:0


Wie kann ich einen Benutzer ändern, ohne diesen Fehler zu verursachen?
Wenn ich den Benutzer wieder umbenenne ist der Fehler Weg.

Didi

All Comments (1)

avatar

Hi Didi,

It looks like the user 'Benutzer' is set as the "Definer" for some objects (procedures, triggers) in the database. This means when the triggers go to execute they run as if 'Benutzer'.

To validate this can go to File > Data Sources > Upgrade (tab) > while holding the CTRL key hit the "Send Schema to Support". Next, open your favourite text editor and paste (CTRL+ v). Now search in this text for <Definer> you should find some with Benutzer, that need to be changed.

Example:

<Trigger>
    <Name>tr_ConnectionLog_After_Update</Name>
    <Timing>AFTER</Timing>
    <Event>UPDATE</Event>
    <Orientation>ROW</Orientation>
    <Definer>root@localhost</Definer>
    <Code><![CDATA[BEGIN...END]]></Code>
</Trigger>


Your only option at this point is to change the definer for the affected objects. Doing so is a pain, from what I can gather on Google, you will need to re-create all the affected objects in the database. A quick Google search should do the trick. If you need further assistance please let me know.

Best regards,

Stéfane Lavergne