#mysql #mariadb
#mysql #mariadb
Вопрос:
В Mariadb я хотел бы обновить max_connections
несколько пользовательских записей следующим образом:
> UPDATE mysql.user SET max_connections = 10 WHERE User = "foo";
ERROR 1356 (HY000): View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
Похоже, что это невозможно.
Причина, по которой я пытаюсь это сделать, заключается в том, что я не нашел способа запустить ALTER USER
инструкцию для нескольких хостов:
> ALTER USER foo WITH MAX_USER_CONNECTIONS 20;
ERROR 1396 (HY000): Operation ALTER USER failed for 'foo'
Я не хочу делать это для каждого Host
отдельно. Как я могу установить max_connections
для всех записей с одинаковым именем пользователя, но с другим хостом?
Я должен сделать это:
ALTER USER foo@remote1 WITH MAX_USER_CONNECTIONS 20;
ALTER USER foo@remote2 WITH MAX_USER_CONNECTIONS 20;
ALTER USER foo@remote3 WITH MAX_USER_CONNECTIONS 20;
что является громоздким, потому что сначала мне нужно выяснить все удаленные устройства, чтобы обновить их до одного и того же значения.
Комментарии:
1. С помощью MySQL вы можете сделать это:mysql> СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ ‘francis’@’localhost’, ИДЕНТИФИЦИРУЕМОГО ‘frank’ -> С ПОМОЩЬЮ MAX_QUERIES_PER_HOUR 20 -> MAX_UPDATES_PER_HOUR 10 -> MAX_CONNECTIONS_PER_HOUR 5 -> MAX_USER_CONNECTIONS 2; Но max_connections — это сервер, а не пользовательская настройка.
2. @DaveStokes Запрос
ALTER USER foo@localhost WITH MAX_USER_CONNECTIONS 20;
(обратите@localhost
внимание) работает нормально. Просто я не хочу делать это для всех существующих пользовательских записей.3. Если бы только был способ написать код для повторного выполнения действий… возможно, мы могли бы назвать это «кругом». За исключением того, что одна часть будет меняться каждый раз по кругу, мы могли бы назвать это «вариантом». 😉
4. @BillKarwin Я ищу простое тупое решение. Если мне нужно написать правильное решение, я просто не буду беспокоиться и вместо этого повторю строки.
Ответ №1:
Вам необходимо обновить конфигурацию файла параметров сервера MySQL (т.Е. /etc/my.cnf)
[mysqld]
max_connections = 50000 // max connection of MySql server
max_user_connections = 100 // per user
Если вы хотите установить для каждого пользователя / хоста, вам нужно изменить для каждого подобного
ALTER USER 'user1'@'localhost' WITH MAX_USER_CONNECTIONS 0;
ALTER USER 'user2'@'localhost' WITH MAX_USER_CONNECTIONS 5;
ALTER USER 'user3'@'localhost' WITH MAX_USER_CONNECTIONS 20;
Примечание: Я не думаю, что нужна эта конфигурация, потому что она должна управляться пулом соединений.
Ссылка на документ:https://dev.mysql.com/doc/refman/8.0/en/user-resources.html
Комментарии:
1. Спасибо. Я надеялся найти способ обновить ограничения для нескольких записей одновременно. Этот способ очень громоздок для автоматизации, потому что на пользователя приходится несколько записей.