Что такое решение для сохранения нескольких соединений с базой данных MySQL в PHP - PullRequest
0 голосов
/ 05 мая 2019

Мне нужно решение для сохранения всех подключений MySQL в PHP и использования его в транзакциях sql между подключениями.

Я знаю, что не могу выполнять транзакции между различными подключениями, но хочу обработать в PHP илирешение.(Я не знаю, «каково решение?»)

Это верно, о:

  • безопасности?
  • производительности?
  • транзакция?
  • ...

завершающий вопрос:

У меня есть несколько баз данных, которые связаны с разными пользователями.Одна или несколько баз данных являются общими для других баз данных, которые используют их в объединениях, например:

db_common with common_user and tables: common_1, common_2, ...
db_specific_1 with user_1 and tables: s1_1, s1_2, ...
db_specific_2 with user_2 and tables: s2_1, s2_2, ...

Может быть объединением db_specific_1 с общим или даже с db_specific_2.

Я хочу удалить объединениямежду базами данных.Потому что db_specific_1 для проекта, а db_specific_2 для другого проекта.Поскольку сервер базы данных один и тот же, я предоставил выборочный доступ к user_1 для db_specific_2, что неверно, поскольку db_specific_2 необходимо перенести на другой сервер.

Мне нужна транзакция между db_specific_1 и db_specific_2 и db_common.

1 Ответ

0 голосов
/ 05 мая 2019

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

grant all on `database`.* to `username`@localhost

Если тот же пользователь имеет полный доступ к другой базе данных2, я добавляю

grant all on `database2`.* to `username`@localhost

Но обычно только некоторые таблицы или столбцы должны быть доступны, а иногда только для чтения:

grant select on `database2`.stats to `username`@localhost

В PHP используйте database.table вместо table для выбора иностранных таблиц:

SELECT a.name, b.stat 
FROM `mytable` a 
LEFT JOIN `database2`.`stats` b ON b.id = a.id
...