Al intentar crear una vista (View), una rutina (Routine) o un procedimiento almacenado (Procedure) para tu base de datos desde phpMyAdmin, puede aparecer un error como este:
#1142 - TRIGGER command denied to user '_sso_XXXXX'@'1.2.3.4' for table 'my_table'
Este error tiene que ver con la forma en que entras a phpMyAdmin y con los permisos del usuario con el que lo haces.
Cuando entras a la base de datos desde el panel de control con inicio de sesión único (SSO), el sistema crea un usuario temporal para acceder y navegar por tu base de datos. Esto se debe a que no guardamos las contraseñas en texto plano, por lo que la interfaz no muestra los datos del usuario MySQL real.
Ese usuario temporal (_sso_XXXX) no tiene los permisos necesarios para crear vistas, rutinas o procedimientos, así que no sirve para configurarlos. Además, por motivos de seguridad no es posible iniciar sesión directamente en phpMyAdmin con usuario y contraseña.
Métodos alternativos
Hay dos formas de resolverlo: configurar el acceso MySQL remoto y usar MySQL Workbench, o conectarte al plan por SSH y usar la línea de comandos de MySQL.
Nota: haz una copia de seguridad de tu base de datos antes de crear o modificar estos objetos.
Procedimientos almacenados
Con Workbench
- En el Navigator, ve a tu base de datos > Stored Procedures.
- Haz clic derecho y selecciona Create Stored Procedure.
- Define el procedimiento; en este ejemplo se llama
CalculateTotalSales. - Escribe el código:
BEGIN SELECT SUM(amount) INTO total_sales FROM sales WHERE product_id = product_id AND sale_date BETWEEN start_date AND end_date; END - Haz clic en Apply y luego en Finish. Si aparece algún error, revisa tu consulta SQL.
Para comprobar que el procedimiento se añadió correctamente, abre una pestaña de consulta nueva y ejecuta el siguiente código con el icono del rayo:
CALL CalculateTotalSales(101, '2025-01-01', '2025-01-09', @total_sales);
SELECT @total_sales;
Con la línea de comandos (CLI)
Primero hay que crear el procedimiento en un archivo .sql. En este ejemplo se crea un procedimiento básico para calcular el total de ventas. phpMyAdmin puede ayudarte a redactar el archivo SQL, pero no podrás ejecutarlo desde phpMyAdmin.
DELIMITER $$
CREATE PROCEDURE CalculateTotalSales(
IN product_id INT,
IN start_date DATE,
IN end_date DATE,
OUT total_sales DECIMAL(10, 2)
)
BEGIN
SELECT SUM(s.amount)
INTO total_sales
FROM sales s
WHERE s.product_id = product_id
AND s.sale_date BETWEEN start_date AND end_date;
END $$
DELIMITER ;
Después, carga el archivo .sql en tu base de datos con la CLI de MySQL. Sube el archivo a la carpeta raíz de tu plan con FTP o con el File Manager, conéctate al plan por SSH y carga el archivo:
mysql -u [username] -p [database] -h [hostname] < procedure.sql
Se te pedirá la contraseña y, una vez creado el procedimiento, puedes confirmarlo así:
MariaDB [wordpress-35303439ccfa]> SHOW PROCEDURE STATUS WHERE db = 'wordpress-35303439ccfa';
+------------------------+---------------------+-----------+--------------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------------------------+---------------------+-----------+--------------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| wordpress-35303439ccfa | CalculateTotalSales | PROCEDURE | wordpress-35303439ccfa@% | 2025-01-23 17:36:53 | 2025-01-23 17:36:53 | DEFINER | | utf8mb3 | utf8mb3_general_ci | latin1_swedish_ci |
+------------------------+---------------------+-----------+--------------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.004 sec)
Vistas (Views)
Con Workbench
- En el Navigator, selecciona la base de datos en la parte superior izquierda, haz clic derecho en Views y selecciona Create View.
- Cuando se haya creado la vista, escribe en el cuadro de consulta el código de la consulta y haz clic en Apply.
- Una ventana emergente te pedirá revisar el script. Haz clic en Apply y luego en Finish para terminar de configurar la vista.
Para comprobar que la vista se creó y configuró bien, ve al Navigator, selecciona la base de datos, haz clic derecho en Views y la vista debería aparecer. También puedes usar el cuadro de consulta para ejecutar un comando SQL que seleccione la vista.
Con la línea de comandos (CLI)
Para crear una vista, genera un archivo SQL nuevo con las consultas necesarias. phpMyAdmin puede ayudarte a redactarlo, pero no podrás ejecutarlo desde phpMyAdmin. Este es el ejemplo que se cargará con la CLI de MySQL:
CREATE OR REPLACE VIEW product_sales_summary AS
SELECT
product_id,
sale_date,
SUM(amount) AS total_sales
FROM
sales
GROUP BY
product_id, sale_date
ORDER BY
product_id, sale_date;
SELECT * FROM product_sales_summary;
Sube el archivo SQL a la carpeta raíz de tu espacio web con el File Manager o por FTP, conéctate al plan por SSH y ejecuta el comando de importación de MySQL:
mysql -u [username] -p [database] -h [hostname] < view.sql
Puedes consultar la vista con una consulta como esta en la CLI de MySQL:
SELECT * FROM product_sales_summary;
+------------+-------------+
| product_id | total_sales |
+------------+-------------+
| 101 | 420.50 |
| 102 | 250.00 |
| 103 | 450.00 |
+------------+-------------+
Rutinas (Routines)
Con Workbench
- En el Navigator, ve a tu base de datos > Stored Procedures.
- Haz clic derecho y selecciona Create Stored Procedure.
- Define el procedimiento; en este ejemplo se llama
GetProductSales. - Escribe el código; en este ejemplo usaremos el siguiente:
BEGIN DECLARE total_sales DECIMAL(10, 2); SELECT SUM(amount) INTO total_sales FROM sales WHERE product_id = product_id AND sale_date BETWEEN start_date AND end_date; SELECT product_id AS ProductID, start_date AS StartDate, end_date AS EndDate, total_sales AS TotalSales; END

Cuando termines, haz clic en Apply y guarda los cambios. Para verificar que se creó bien, despliega la flecha de Stored Procedures en la esquina superior izquierda: la rutina nueva debería aparecer. También puedes ejecutar esta consulta, cambiando el nombre de la base de datos:
SHOW PROCEDURE STATUS WHERE Db = 'salesandsold-35303837922f';

Con la línea de comandos (CLI)
Igual que con los procedimientos, hay que generar un archivo SQL que contenga la rutina y cargarlo en la base de datos con la CLI de MySQL. El ejemplo de rutina es este:
DELIMITER $$
CREATE PROCEDURE GetProductSales(
IN product_id INT,
IN start_date DATE,
IN end_date DATE
)
BEGIN
DECLARE total_sales DECIMAL(10, 2);
-- Calcula las ventas totales del producto en el rango de fechas indicado
CALL CalculateTotalSales(product_id, start_date, end_date, total_sales);
-- Muestra el resultado
SELECT
product_id AS ProductID,
start_date AS StartDate,
end_date AS EndDate,
total_sales AS TotalSales
FROM dual;
END $$
DELIMITER ;
Cuando el archivo SQL esté en la carpeta raíz del espacio web de tu plan, conéctate por SSH e impórtalo en la base de datos MySQL:
mysql -u [username] -p [database] -h [hostname] < routine.sql
Después puedes llamar a la rutina con esta consulta:
CALL GetProductSales(101, '2025-01-01', '2025-01-09');
+-----------+------------+------------+------------+
| ProductID | StartDate | EndDate | TotalSales |
+-----------+------------+------------+------------+
| 101 | 2025-01-01 | 2025-01-09 | 420.50 |
+-----------+------------+------------+------------+
1 row in set (0.001 sec)
Query OK, 1 row affected (0.001 sec)