Veritabanı oluşturdum, örneğin '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;
Şimdi her yerden veritabanına giriş yapabiliyorum, ancak tablo oluşturamıyorum.
Bu veritabanı ve (gelecekte) tablolar üzerinde tüm ayrıcalıkların nasıl verileceği. 39;mydb' veritabanında tablo oluşturamıyorum. Her zaman şunu alıyorum:
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;
Süper Kullanıcı" ayrıcalıklarımı bu şekilde oluşturuyorum (normalde bir ana bilgisayar belirtmeme rağmen).
Bu yanıt erişim sorununu çözebilirken, WITH GRANT OPTION
[diğer kullanıcıların izinlerini düzenleyebilen] bir MySQL kullanıcısı oluşturur (https://dev.mysql.com/doc/refman/5.6/en/privileges-provided.html#priv_grant-option).
GRANT OPTION ayrıcalığı, kendinizin sahip olduğu ayrıcalıkları diğer kullanıcılara vermenizi veya diğer kullanıcılardan kaldırmanızı sağlar.
Güvenlik nedeniyle, bu tür bir kullanıcı hesabını kamunun erişebileceği herhangi bir işlem için (örneğin bir web sitesi) kullanmamalısınız. Bu tür bir kullanım için yalnızca veritabanı ayrıcalıklarına sahip bir kullanıcı oluşturmanız önerilir.
Bu eski bir soru ama kabul edilen cevabın güvenli olduğunu düşünmüyorum. Bir süper kullanıcı oluşturmak için iyidir, ancak tek bir veritabanında ayrıcalıklar vermek istiyorsanız iyi değildir.
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
%
, localhost
un amaçladığı soket iletişimlerini kapsamıyor gibi görünüyor. WITH GRANT OPTION` sadece süper kullanıcı için iyidir, aksi takdirde genellikle bir güvenlik riskidir.
Umarım bu yardımcı olur.
Bu, bazı insanlar için faydalı olacaktır:
MySQL komut satırından:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Ne yazık ki, bu noktada yeni kullanıcının veritabanlarıyla hiçbir şey yapma izni yoktur. Aslında, yeni kullanıcı oturum açmaya çalışsa bile (parola, şifre ile), MySQL kabuğuna ulaşamayacaktır.
Bu nedenle yapılması gereken ilk şey, kullanıcının ihtiyaç duyacağı bilgilere erişimini sağlamaktır.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Bu komuttaki yıldız işaretleri, erişebilecekleri veritabanı ve tabloyu (sırasıyla) ifade eder - bu özel komut, kullanıcının tüm veritabanları ve tablolarda tüm görevleri okumasına, düzenlemesine, yürütmesine ve gerçekleştirmesine olanak tanır.
Yeni kullanıcılarınız için ayarlamak istediğiniz izinleri tamamladıktan sonra, her zaman tüm ayrıcalıkları yeniden yüklediğinizden emin olun.
FLUSH PRIVILEGES;
Yaptığınız değişiklikler artık geçerli olacaktır.
Daha fazla bilgi için: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Komut satırı konusunda rahat değilseniz MySQL workbench, Navicat veya SQLyog gibi bir istemci kullanabilirsiniz.