Jeg har opprettet en database, for eksempel '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;
Nå kan jeg logge på databasen fra hvor som helst, men kan ikke opprette tabeller.
Hvordan gi alle privilegier på den databasen og (i fremtiden) tabeller. Jeg kan ikke opprette tabeller i min database. Jeg får alltid:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;
Slik oppretter jeg "superbruker"-rettighetene mine (selv om jeg normalt ville angitt en vert).
Selv om dette svaret kan løse problemet med tilgang, oppretter WITH GRANT OPTION
en MySQL-bruker som kan redigere tillatelsene til andre brukere.
GRANT OPTION-privilegiet lar deg gi andre brukere eller fjerne fra andre brukere de rettighetene du selv har.
Av sikkerhetsgrunner bør du ikke bruke denne typen brukerkonto for prosesser som offentligheten har tilgang til (f.eks. et nettsted). Det anbefales at du oppretter en bruker med kun databaserettigheter for denne typen bruk.
Dette er et gammelt spørsmål, men jeg tror ikke det aksepterte svaret er trygt. Det er bra for å opprette en superbruker, men ikke bra hvis du vil gi privilegier på en enkelt database.
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
%
ser ikke ut til å dekke socket-kommunikasjon, som localhost
er for. WITH GRANT OPTION
er bare bra for superbrukeren, ellers er det vanligvis en sikkerhetsrisiko.
Håper dette hjelper.
Dette vil være nyttig for noen mennesker:
Fra MySQL-kommandolinjen:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Dessverre har newuser på dette tidspunktet ingen tillatelser til å gjøre noe med databasene. Faktisk, hvis newuser til og med prøver å logge inn (med passordet, passordet), vil de ikke kunne nå MySQL-skallet.
Derfor er det første du må gjøre å gi brukeren tilgang til informasjonen de trenger.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Stjernene i denne kommandoen viser til henholdsvis databasen og tabellen de har tilgang til - denne spesifikke kommandoen gir brukeren mulighet til å lese, redigere, utføre og utføre alle oppgaver på tvers av alle databasene og tabellene.
Når du har fullført tillatelsene du vil sette opp for de nye brukerne, må du alltid sørge for å laste inn alle rettighetene på nytt.
FLUSH PRIVILEGES;
Endringene dine vil nå tre i kraft.
For mer informasjon: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Hvis du ikke er komfortabel med kommandolinjen, kan du bruke en klient som MySQL workbench, Navicat eller SQLyog.