Если вы подключаетесь к MySQL с помощью удаленной машины (пример workbench) и т. д., используйте следующие шаги для устранения этой ошибки в ОС, где установлен MySQL
mysql -u root -p
CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;
Попробуйте войти в экземпляр MYSQL. Это помогло мне устранить эту ошибку.
Используя один канал, вся транзакция будет привязана ко всем одноранговым узлам на канале, даже если вы ограничиваете доступ к транзакции через просмотр ACL, поэтому, если вам нужно защитить частную транзакцию между конкретными одноранговыми узлами, разделите эти одноранговые узлы на другом канале. для события вы можете публиковать различные события для одной и той же транзакции и для каждого клиента подписываться на разные события. пример транзакции (владелец актива обновления) публикует два события (событие A, событие B), и для клиента может выбрать подписку на (только событие A), а другой клиент может подписаться на (событие B)
Permission Access Control (ACL): позволяет реализовать различные уровни грантов по активам и участникам бизнес-сети. Регистр (данные) разделяются между всеми одноранговыми узлами, которые присоединились к каналу и бизнес-сети.
Канал: позволяет вам «физически» разделять регистр между одноранговыми узлами. Если одноранговый узел не присоединяется к каналу, у него нет копии данных.
Комбинация канала и ACL позволяет создать сложную конфигурацию доступа к данным.
Что касается событий, я думаю, что вы могли бы реализовать разные события на основе личности участника:
async function sampleTx(tx) {
var currentParticipant = getCurrentParticipant();
let factory = getFactory();
let eventOne = factory.newEvent('org.example', 'EventOne');
let eventTwo = factory.newEvent('org.example', 'EventTwo');
if(currentParticipant.getFullyQualifiedType() !== 'org.example.ParticipantOne'){
//....
emit(eventOne);
} else if(currentParticipant.getFullyQualifiedType() !== 'org.example.ParticipantTwo'){
//....
emit(eventTwo);
}
}