Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Language specific forums Russian (Русский) Сервер баз данных
  • Search

Добавление базы данных с именем без префикса

Вопросы по работе Сервера баз данных
MySQL, PostgreSQL, MariaDB, Percona Server, phpMyAdmin, phpPgAdmin
Post Reply
  • Print view
Advanced search
6 posts • Page 1 of 1
AlexandreFrolov
Posts: 26
Joined: Sun Jun 09, 2019 5:48 pm
Contact:
Contact AlexandreFrolov
Website Facebook Twitter

Os: Debian 8x
Web: apache + nginx
Добавление базы данных с именем без префикса
  • Quote

Post by AlexandreFrolov » Wed Jun 19, 2019 9:56 am

Здравствуйте!
Для одного проекта потребовалось добавить пользователю базу данных с именем, таким же как имя пользователя без префикса.
Добавил вручную:

Code: Select all

mysql -u root
create database usrname; 
grant all privileges on usrname.* to 'usrname'@'localhost' identified by "******";
Теперь хотелось бы сделать так, чтобы база появилась в панели, в списке баз пользователя usrname.
Нашел совет viewtopic.php?t=13902, где рекомендовали создать файл /usr/local/vesta/data/users/some_vestacp_user/db.conf и добавить в него строку:

Code: Select all

DB='dbname-created-above' DBUSER='someuser-created-above' MD5='' HOST='localhost' TYPE='mysql' CHARSET='UTF8' U_DISK='1' SUSPENDED='no' TIME='12:00:00' DATE='2017-06-12'
Обновил пользователя через v-rebuild-user some_vestacp_user.
У пользователя теперь пишет, что есть одна база, но в списке баз ее нет.

Подскажите, пожалуйста, как мне правильно добавить созданную базу данных без префикса в имени в список баз данных пользователя?
Спасибо!
Top

linuxman
Posts: 47
Joined: Tue Jun 04, 2019 12:56 pm

Os: Debian 8x
Web: apache + nginx
Re: Добавление базы данных с именем без префикса
  • Quote

Post by linuxman » Wed Jun 19, 2019 10:11 am

AlexandreFrolov wrote: ↑
Wed Jun 19, 2019 9:56 am
Здравствуйте!
Для одного проекта потребовалось добавить пользователю базу данных с именем, таким же как имя пользователя без префикса.
Добавил вручную:

Code: Select all

mysql -u root
create database usrname; 
grant all privileges on usrname.* to 'usrname'@'localhost' identified by "******";
Теперь хотелось бы сделать так, чтобы база появилась в панели, в списке баз пользователя usrname.
Нашел совет viewtopic.php?t=13902, где рекомендовали создать файл /usr/local/vesta/data/users/some_vestacp_user/db.conf и добавить в него строку:

Code: Select all

DB='dbname-created-above' DBUSER='someuser-created-above' MD5='' HOST='localhost' TYPE='mysql' CHARSET='UTF8' U_DISK='1' SUSPENDED='no' TIME='12:00:00' DATE='2017-06-12'
Обновил пользователя через v-rebuild-user some_vestacp_user.
У пользователя теперь пишет, что есть одна база, но в списке баз ее нет.

Подскажите, пожалуйста, как мне правильно добавить созданную базу данных без префикса в имени в список баз данных пользователя?
Спасибо!
Странно.
А самой базе mysql в таблицах где прописывает данные может чего -то не хватает ?
Используйте phpmyadmin
Top

AlexandreFrolov
Posts: 26
Joined: Sun Jun 09, 2019 5:48 pm
Contact:
Contact AlexandreFrolov
Website Facebook Twitter

Os: Debian 8x
Web: apache + nginx
Re: Добавление базы данных с именем без префикса
  • Quote

Post by AlexandreFrolov » Wed Jun 19, 2019 12:34 pm

linuxman wrote: ↑
Wed Jun 19, 2019 10:11 am
А самой базе mysql в таблицах где прописывает данные может чего -то не хватает ?
Используйте phpmyadmin
В phpmyadmin пускает после создания базы указанным выше способом и установки пароля:

Code: Select all

MariaDB [(none)]> SET PASSWORD FOR 'usrname'@'localhost' = PASSWORD('******');FLUSH PRIVILEGES;
MariaDB [(none)]> SET PASSWORD FOR 'usrname'@'%' = PASSWORD('******');FLUSH PRIVILEGES;
Удается загрузить в базу данные из дампа.
Однако в панели база так и не появляется в списке баз, хотя написано, что у пользователя есть одна база.

Это тоже не показывает каких-либо особых отличий от баз данных, созданных панелью:

Code: Select all

select * from user;
Отличаются только хеши паролей.
Top

AlexandreFrolov
Posts: 26
Joined: Sun Jun 09, 2019 5:48 pm
Contact:
Contact AlexandreFrolov
Website Facebook Twitter

Os: Debian 8x
Web: apache + nginx
Re: Добавление базы данных с именем без префикса
  • Quote

Post by AlexandreFrolov » Wed Jun 19, 2019 1:55 pm

Решил проблему таким способом.

Скопировал /usr/local/vesta/bin/v-add-database в /usr/local/vesta/bin/v-add-database-noprefix и внес такие изменения:

Code: Select all

#database="$user"_"$2"
#dbuser="$user"_"$3"
database=$2
dbuser=$3
После этого добавил базу данных:

Code: Select all

/usr/local/vesta/bin/v-add-database-noprefix atest atest atest pwd*** mysql localhost CP1251
И она появилась в списке баз данных у пользователя.
Top

linuxman
Posts: 47
Joined: Tue Jun 04, 2019 12:56 pm

Os: Debian 8x
Web: apache + nginx
Re: Добавление базы данных с именем без префикса
  • Quote

Post by linuxman » Wed Jun 19, 2019 2:27 pm

AlexandreFrolov wrote: ↑
Wed Jun 19, 2019 1:55 pm
Решил проблему таким способом.

Скопировал /usr/local/vesta/bin/v-add-database в /usr/local/vesta/bin/v-add-database-noprefix и внес такие изменения:

Code: Select all

#database="$user"_"$2"
#dbuser="$user"_"$3"
database=$2
dbuser=$3
После этого добавил базу данных:

Code: Select all

/usr/local/vesta/bin/v-add-database-noprefix atest atest atest pwd*** mysql localhost CP1251
И она появилась в списке баз данных у пользователя.
Поздравляю!
А не хотел бы и если возможно написать небольшой tutorial/manual ка ты это сделал и для чего это возможно будет нужно.
Top

AlexandreFrolov
Posts: 26
Joined: Sun Jun 09, 2019 5:48 pm
Contact:
Contact AlexandreFrolov
Website Facebook Twitter

Os: Debian 8x
Web: apache + nginx
Re: Добавление базы данных с именем без префикса
  • Quote

Post by AlexandreFrolov » Thu Jun 20, 2019 7:10 am

linuxman wrote: ↑
Wed Jun 19, 2019 2:27 pm
А не хотел бы и если возможно написать небольшой tutorial/manual ка ты это сделал и для чего это возможно будет нужно.
На tutorial не потянет, но небольшое описание сделаю:

Панель Vesta CP при создании базы данных принудительно добавляет к имени базы данных и к логину пользователя БД префикс в виде идентификатора пользователя.
Например, если для пользователя sunuser вы создаете базу данных dbconf и пользователя БД dbconf, то будет создана база sunuser_dbconf и логин для нее sunuser_dbconf.

Такой прием позволяет избавиться от ошибок, когда разные пользователи панели пытаются создать БД с одним и тем же именем, и в большинстве случаев это оправдано. Пользователь может создавать свои базы данных, не беспокоясь о конфиликтах имен.

Однако может возникнуть необходимость переноса на сервер с панелью Vesta CP созданных ранее проектов, в которых используется другая система имен баз данных и их логинов. При этом по тем или иным причинам изменение имени базы данных в переносимом проекте крайне нежелательно.

Например, сейчас я рассматриваю возможность переноса своего SAAS-сервиса интернет-магазинов на серверы, где вместо панели ISPmanager будет установлена панель Vesta CP.
В процессе такого переноса возникает необходимость обеспечить существующие стандарты на расположение файлов сайтов в каталогах, на именование баз данных и логинов к ним и другие.
Сайты магазинов размещаются на десятках физических серверов, и при переносе недопустима даже временная недоступность интернет-магазинов, поэтому задача не очень тривиальная.

Среди многочисленных сервисов, обеспечивающих работу системы, есть такие, которые размещаются на каждом физическом или виртуальном сервере. Их модификация на отдельных серверах (например, изменение имени базы данных) нежелательна, т.к. вместо одного сервиса получим два разных. При этом на одной части серверов будет работать одна модификация сервиса, а на другой -- другая.

В этом случае новые серверы с панелью Vesta CP нужно настроить таким образом, чтобы на них можно было переносить сайты и сервисы с уже существующих серверов в неизменном виде. Перенос предполагается выполнять с помощью заранее подготовленных скриптов, вызывающих Vesta CP через CLI и API.

Проблема совместимости по физическим путям к файлам и каталогам решается относительно просто с помощью симлинков. Что же касается создания баз данных с нестандартной для Vesta CP системой именования баз и логинов для них, то мы использовали модифицированный файл /usr/local/vesta/bin/v-add-database. Это скрипт CLI, который позволяет создавать базы данных.

Если подключиться к серверу как root и открыть файл /usr/local/vesta/bin/v-add-database в любом текстовом редакторе (например, VIM), то в начале файла можно увидеть строки:

Code: Select all

...
database="$user"_"$2"
dbuser="$user"_"$3"
...
Здесь к имени и логину создаваемой базы данных добавляется через символ подчеркивания префикс -- имя пользователя ОС.
Чтобы получить возможность создавать БД без префикса, скопируйте файл /usr/local/vesta/bin/v-add-database в /usr/local/vesta/bin/v-add-database-noprefix:

Code: Select all

# cp /usr/local/vesta/bin/v-add-database /usr/local/vesta/bin/v-add-database-noprefix
Далее отредактируйте файл /usr/local/vesta/bin/v-add-database-noprefix:

Code: Select all

# vim /usr/local/vesta/bin/v-add-database-noprefix
Измените приведенные выше строки слудующим образом:

Code: Select all

database=$2
dbuser=$3
Затем сохраните файл /usr/local/vesta/bin/v-add-database-noprefix.

После этого вы сможете создавать базы данных через CLI командой v-add-database-noprefix таким же образом, что и командой v-add-database, однако теперь не будут добавляться префиксы к имени и логину БД.
Top


Post Reply
  • Print view

6 posts • Page 1 of 1

Return to “Сервер баз данных”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password