Ik'heb een database gemaakt, bijvoorbeeld '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;
Nu kan ik inloggen op de database van overal, maar kan'geen tabellen maken.
Hoe kan ik alle privileges toekennen op die database en (in de toekomst) tabellen. Ik kan'geen tabellen aanmaken in 'mydb' database. Ik krijg steeds:
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;
Dit is hoe ik mijn "Super User" privileges aanmaak (hoewel ik normaal een host zou specificeren).
Hoewel dit antwoord het probleem van toegang kan oplossen, creëert WITH GRANT OPTION
een MySQL gebruiker die de permissies van andere gebruikers kan bewerken.
De GRANT OPTION privilege stelt u in staat om andere gebruikers die privileges te geven of van andere gebruikers te verwijderen die u zelf bezit.
Om veiligheidsredenen moet je dit type gebruikersaccount niet gebruiken voor een proces waar het publiek toegang tot heeft (bijvoorbeeld een website). Het wordt aanbevolen dat u een gebruiker aanmaakt met alleen databaseprivileges voor dat soort gebruik.
Dit is een oude vraag maar ik denk niet'dat het geaccepteerde antwoord veilig is. Het'is goed om een supergebruiker aan te maken, maar niet goed als je privileges wilt toekennen op een enkele database.
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
%
lijkt niet de socket communicatie te dekken, waar de localhost
voor is. WITH GRANT OPTION
is alleen goed voor de super gebruiker, anders is het meestal een veiligheidsrisico.
Hopelijk helpt dit.
Dit zal voor sommige mensen nuttig zijn:
Van de MySQL opdrachtregel:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Helaas, op dit punt heeft newuser geen rechten om iets te doen met de databases. In feite, als newuser zelfs probeert in te loggen (met het wachtwoord, wachtwoord), zal hij niet in staat zijn om de MySQL shell te bereiken.
Daarom is het eerste wat we moeten doen de gebruiker toegang geven tot de informatie die hij nodig zal hebben.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
De sterretjes in dit commando verwijzen naar de databank en de tabel (respectievelijk) waartoe ze toegang hebben - dit specifieke commando laat de gebruiker toe om alle taken in alle databanken en tabellen te lezen, te bewerken, uit te voeren en uit te voeren.
Zodra u de rechten die u voor uw nieuwe gebruikers wilt instellen definitief hebt gemaakt, moet u er altijd voor zorgen dat alle rechten opnieuw geladen worden.
FLUSH PRIVILEGES;
Uw wijzigingen zullen nu van kracht zijn.
Voor meer informatie: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Als u niet vertrouwd bent met de opdrachtregel dan kunt u een client gebruiken zoals MySQL workbench, Navicat of SQLyog