Symptômes
L'erreur suivante apparaît en essayant d'ouvrir le domaine dans Parallels Plesk Panel 8.x via Domaines -> domain.tld:Unable to create SysUser object: SysUser: unable to select: no such row in the table
0: /usr/local/psa/admin/plib/class.DomainControlForm.php:168
DomainControlForm->assign(object of type BsDomain)
1: /usr/local/psa/admin/htdocs/domains/dom_ctrl.php3:149
Dans Parallels Plesk Panel 9.x via Domaines -> domain.tld:
Unable to create PHostingManager object:An error occured during SysUser class creation: SysUser: unable to select: no such row in the table
- 0: common_func.php3:108
- psaerror(string 'Unable to create PHostingManager object:An error occured during SysUser class creation: SysUser: unable to select: no such row in the table')
- 1: client.domain.hosting.anonymous-ftp.php:19
- plesk__client__domain__hosting__anonymous_ftp->validateHosting(object of type BsDomain)
- 2: client.domain.hosting.anonymous-ftp.php:47
- plesk__client__domain__hosting__anonymous_ftp->validateItem(object of type UserAdmin)
- 3: UIPointer.php:1123
- UIPointer->validate()
Cause
L'hébergement physique est configuré sur le domaine, cependant l'utilisateur système approprié manque :mysql> select * from (select A.id, A.name as domain, A.htype as 'hosting type', sys_users.login as 'system user' from (select id, concat('/var/www/vhosts/', name) as home, htype, name from domains) A left join sys_users on (A.home=sys_users.home)) B where `hosting type` = 'vrt_hst' and `system user` is NULL;
+-----+------------+--------------+-------------+
| id | domain | hosting type | system user |
+-----+------------+--------------+-------------+
| 15 | domain.tld | vrt_hst | NULL |
+-----+------------+--------------+-------------+
1 row in set (0.00 sec)
mysql>
Le domain.tld est votre domane qui rencontre le problème. /var/www/vhosts is PRODUCT_ROOT_D, il peut s'agir de /var/www/vhosts, /usr/local/www/vhosts or /srv/www/vhosts sur votre serveur.
Resolution
Les instructions suivantes sont conseillées pour résoudre le problème.1. Sauvegarder la base de données de Parallels Plesk Panel avant toute reconfiguration.
~# mysqldump -uadmin -p`cat /etc/psa/.psa.shadow` psa > psa.dump.`date +%F.%s`.sql
2. Les autres instructions dépendent de l'utilisateur système du domaine qui existe.
2.1 L'utilisateur système existe :~# grep domain.tld /etc/passwd
domain_ftp_user:x:10001:2524::/var/www/vhosts/domain.tld:/bin/false
~#
/var/www/vhosts est PRODUCT_ROOT_D. domain_ftp_user est l'utilisateur système de l'ancien domaine.
3.1 Pour résoudre le problème, nous vous conseillons d'insérer manuellement l'enregistrement manquant dans la base de données de Parallels Plesk Panel.
3.1.1 Obtenez l'ID de l'utilisateur système du domaine:
mysql> select sys_user_id from hosting where dom_id=15;
+-------------+
| sys_user_id |
+-------------+
| 4 |
+-------------+
1 row in set (0.00 sec)
mysql>
15 est l'ID du domaine. Pour de plus amples détails, voir la requête dans la partie CAUSE.
3.1.2 Insérez un enregistrement de compte :
mysql> insert into accounts(type,password) values ('plain','<NEW PASSWORD>');
Query OK, 1 row affected (0.09 sec)
mysql>
<NEW PASSWORD> est un nouveau mot de passe pour le nouvel utilisateur système pour le domaine. C'est également le mot de passe pour l'utilisateur FTP du domaine.
3.1.3 Trouvez l'ID de l'enregistrement créé:
mysql> select * from accounts order by id desc limit 1;
+-----+-------+------------------+
| id | type | password |
+-----+-------+------------------+
| 186 | plain | <NEW PASSWORD> |
+-----+-------+------------------+
1 row in set (0.00 sec)
mysql>
3.1.4 Insérez l'enregistrement dans le tableau sys_users:
mysql> insert into sys_users values (4,'sb4',186,'/var/www/vhosts/domain.tld','/bin/false',0);
Query OK, 1 row affected (0.08 sec)
mysql>
<NEW USER> est le login du nouvel utilisateur système pour le domaine domain.tld, il est également l'utilisateur FTP du domaine. et 4 est sys_user_id du domaine, 186 est l'ID du nouveau mot de passe.
2.2 L'utilisateur système n'existe pas.
~# grep domain.tld /etc/passwd
~#
3.2 Nous vous conseillons de réactiver l'hébergement physique pour le domaine. Cependant notez que le répertoire d'hébergement virtuel est écrasé et que le contenu du domaine est perdu.
3.2.1 Désactivez l'hébergement pour le domaine :
mysql> update domains set htype='none' where name='domain.tld';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> delete from hosting where dom_id=15;
Query OK, 1 row affected (0.00 sec)
mysql>
15 est l'ID du domaine, pour de plus amples détails, voir la requête dans la partie CAUSE.
3.3.3 Connectez-vous à Parallels Plesk Panel et configurez l'hébergement physique pour le domaine via Domaines -> domain.tld -> Configuration. Choisissez l'hébergement physique, insérez un nouveau mot de passe et login utilisateur. Cliquez sur OK pour terminer la configuration.
Additional information
Utilisez la commande suivante pour vous connecter à la base de données de Parallels Plesk Panel :~# mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa