#mysql
#mysql
Вопрос:
Я использую Zip-архив MySQL 5.5.16 без установки на Win7.
После того, как я запустил сервер, команда show databases
показала мне список из 2 баз данных: information_schema
и test
. Последнее пустое.
Где таблица user
?
Я попытался создать нового пользователя с помощью этой команды create user newUser;
и получил следующее сообщение об ошибке: ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation
Что мне делать для создания баз данных, таблиц и выполнения всех операций, которые я хочу выполнить? Я не знаю, имеет ли тот факт, что я использую MySQL 5.5.16 noinstall Zip Archive
, какое-то отношение к сообщению об ошибке?
Ответ №1:
Первое, что нужно сделать, это запустить это:
SHOW GRANTS;
Вы быстро увидите, что вам был назначен анонимный пользователь для аутентификации в mysql.
Вместо входа в mysql с
mysql
войдите в систему следующим образом:
mysql -uroot
По умолчанию root @localhost имеет все права и не имеет пароля.
Если вы не можете войти в систему как root без пароля, выполните следующие действия:
Шаг 01) Добавьте два параметра в раздел mysqld my.ini:
[mysqld]
skip-grant-tables
skip-networking
Шаг 02) Перезапустите mysql
net stop mysql
<wait 10 seconds>
net start mysql
Шаг 03) Подключение к mysql
mysql
Шаг 04) Создайте пароль от root@localhost
UPDATE mysql.user SET password=password('whateverpasswordyoulike')
WHERE user='root' AND host='localhost';
exit
Шаг 05) Перезапустите mysql
net stop mysql
<wait 10 seconds>
net start mysql
Шаг 06) Войдите в систему как root с паролем
mysql -u root -p
У вас все должно быть хорошо.
ПРЕДОСТЕРЕЖЕНИЕ: пожалуйста, удалите анонимных пользователей !!!
Комментарии:
1. @CharlieParker
my.ini
— это файл конфигурации для MySQL / Windows. Я упоминалmy.ini
, поскольку вопрос начинается сI'm using MySQL 5.5.16 noinstall Zip Archive on Win7.
2. Вы можете добавить строки шага 01) в файл /usr/local/mysql/my.cnf в Mac OS X
3. Это сработало для меня. Однако, в качестве побочного эффекта, это привело к тому, что мое java-приложение не смогло подключиться к базе данных с конкретным пользователем базы данных (т. Е. Не root). Это должно произойти?
4. Альтернатива предложению @goker.cebeci:
/etc/mysql/my.cnf
5. Еще одна альтернатива предложению @goker.cebeci (homebrew mariadb) :
/usr/local/etc/my.cnf
Ответ №2:
Для меня проблема заключалась (по очень странной причине) в том, что root имел Host
%
вместо localhost
Я получил вышеуказанную ошибку при попытке DROP USER
; Привилегии, предложенные в ответе выше, у меня уже были, поэтому решение мне не подошло.
БД выглядела так:
mysql> drop user 'testuser'@'%';
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation
mysql> select Host,User,drop_priv from user;
------ ------------------ -----------
| Host | User | drop_priv |
------ ------------------ -----------
| % | mysql.infoschema | N |
| % | mysql.session | N |
| % | mysql.sys | N |
| % | root | Y |
------ ------------------ -----------
И
mysql> SHOW GRANTS FOR 'root'@'%';
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Grants for root@% |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Я перепробовал много вещей, но в конце концов я изменил Host
from %
на localhost
для соображений безопасности, ничего больше.
mysql> UPDATE user SET Host='localhost' WHERE user='root' LIMIT 1;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Я не знаю почему, но это сработало.
mysql> quit
$ mysql -u root -p
.. ENTER (NO PASSWORD) ..
mysql> drop user 'testuser'@'%';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
Понятия не имею, почему, но надеюсь, что это поможет другим…
Я использую CentOS, в котором есть SELinux и другие вещи, которые, возможно, связаны с другими компонентами. не знаю.
Комментарии:
1. также у меня такая же проблема, пользователь root не может удалить других пользователей