Przyznaj * * wszystkie * * przywileje w bazie danych

Stworzyłem bazę danych, na przykład 'mydb'.

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;

Teraz mogę zalogować się do bazy danych zewsząd, ale nie mogę tworzyć tabel.

Jak nadać wszystkie uprawnienia w tej bazie danych i (w przyszłości) tabelach. Nie mogę tworzyć tabel w bazie 'mydb'. Zawsze dostaję:

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
Author: codeforester, 2011-02-16

10 answers

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

W ten sposób tworzę moje uprawnienia" Super User " (chociaż normalnie określałbym hosta).

WAŻNA UWAGA

Podczas gdy ta odpowiedź może rozwiązać problem dostępu, WITH GRANT OPTION tworzy użytkownika MySQL, który może edytować uprawnienia innych użytkowników .

Opcja Grant privilege pozwala Ci nadawać innym użytkownikom lub usuwać z nich te przywileje, które sam posiadasz.

Ze względów bezpieczeństwa, nie należy używać tego rodzaj konta użytkownika dla każdego procesu, do którego dostęp będzie mieć społeczeństwo (np. strona internetowa). Zaleca się, aby utworzyć użytkownika z uprawnieniami bazy danych tylko do tego rodzaju wykorzystania.

 826
Author: diagonalbatman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:27

To stare pytanie, ale nie sądzę, aby przyjęta odpowiedź była bezpieczna. Jest to dobre do tworzenia super użytkownika, ale nie dobre, jeśli chcesz przyznać uprawnienia na jednej bazie danych.

grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';

% wydaje się, że nie obejmuje komunikacji socket, że localhost jest dla. WITH GRANT OPTION jest dobre tylko dla superużytkownika, w przeciwnym razie jest to zwykle zagrożenie bezpieczeństwa.

Mam nadzieję, że to pomoże.
 478
Author: akostadinov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-04 02:22:43

To będzie pomocne dla niektórych osób:

Z linii poleceń MySQL:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Niestety, w tym momencie newuser nie ma uprawnień do robienia czegokolwiek z bazami danych. W rzeczywistości, jeśli newuser nawet próbuje się zalogować (z hasłem, hasło), nie będzie w stanie dotrzeć do powłoki MySQL.

Dlatego pierwszą rzeczą do zrobienia jest zapewnienie użytkownikowi dostępu do potrzebnych informacji.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Gwiazdki w tym poleceniu odnoszą się do bazy danych i tabeli (odpowiednio) że mogą uzyskać dostęp-to specyficzne polecenie pozwala użytkownikowi czytać, edytować, wykonywać i wykonywać wszystkie zadania we wszystkich bazach danych i tabelach.

Po sfinalizowaniu uprawnień, które chcesz skonfigurować dla nowych użytkowników, zawsze pamiętaj, aby ponownie załadować wszystkie uprawnienia.

FLUSH PRIVILEGES;

Twoje zmiany wejdą w życie.

Więcej informacji: http://dev.mysql.com/doc/refman/5.6/en/grant.html

Jeśli nie czujesz się komfortowo z wiersza poleceń można wtedy użyć klienta typu MySQL workbench, Navicat lub SQLyog

 103
Author: BrenBarn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-08 06:58:40

1. Tworzenie bazy danych

CREATE DATABASE db_name;

2. Utwórz nazwę Użytkownika dla bazy danych db_name

GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';

3. Użyj bazy danych

USE db_name;

4. W końcu jesteś w bazie danych db_name, a następnie wykonaj polecenia takie jak tworzenie , zaznaczanie i wstawianie operacji.

 28
Author: Bhavnesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-07 09:26:42

Ten SQL nadaje wszystkim bazom danych, ale tylko podstawowe uprawnienia. Są one wystarczające dla Drupal lub Wordpress i jako nicety, pozwala na jedno konto dewelopera dla lokalnych projektów.

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
 20
Author: celeryandsprite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-08 14:18:08
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';

Działa dla przywilejów na schemacie:)

Opcjonalnie: po mypasswd możesz dodać WITH GRANT OPTION

 13
Author: Dutch Glory,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-07 09:32:26

Witam użyłem tego kodu aby mieć super usera w mysql

GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
    CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
    EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
    LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
    SUPER
        ON *.* TO mysql@'%'
    WITH GRANT OPTION;

A następnie

FLUSH PRIVILEGES;
 12
Author: gastonnina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-03 20:40:21

Mogłem to zrobić tylko przez dodanie GRANT OPTION, bez tego zawsze otrzymuj błąd Odmowa uprawnień

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
 12
Author: GnanaPrakash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-06 21:20:51

Dostęp ze zdalnego serwera tylko do bazy mydb

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';

Aby uzyskać dostęp ze zdalnego serwera do wszystkich baz danych.

GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';
 5
Author: Developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 11:32:54

Aby przyznać wszystkie priveleges w bazie danych: mydb użytkownikowi: myuser, wystarczy wykonać:

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

Lub:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

Słowo kluczowe PRIVILEGES nie jest konieczne.

Również Nie wiem, dlaczego inne odpowiedzi sugerują, że IDENTIFIED BY 'password' należy umieścić na końcu polecenia. Uważam, że nie jest to wymagane.

 0
Author: pgmank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-29 14:16:08