PHP MySQL kullanıcı ve veritabanı oluşturmak

4 Cevap php

Yeni bir MySQL veritabanı, yeni bir MySQL kullanıcı oluşturmak ve yeni veritabanına tüm kullanarak PHP üzerinde yeni kullanıcı ayrıcalıkları vermek için bir yolu var mı?

EDIT - Bu başka 1 sunucudan çalıştırmak işaret, yani Sunucu Sunucu B DB / kullanıcı yüklemeye çalışıyor olmalıdır

Ben bu var:

$con = mysql_connect("REMOTE.IP.ADDRESS","root","pass");
mysql_query("CREATE DATABASE ".$db."",$con)or die(mysql_error());
mysql_query("GRANT ALL ON ".$db.".* to  ".$user." identified by '".$dbpass."'",$con) or die(mysql_error());

ama ben hibe sorguda bir hata alıyorum:

"Access denied for user 'root'@'MY.REMOTE.SERVER.HOST.NAME' to database 'dbname'"

4 Cevap

This answer has been edited several times based on new info provided by the OP

Kök gerçekten allowed Eğer bağlanırken ana bilgisayardan sunucuya bağlanmak mı? Hata dize sunucunun kurallı adını dönen varsa, 'localhost' 127.0.0.1 işaret olmadığını çok iyi bir şans var:

"Access denied for user 'root'@'MY.SERVER.HOST.NAME' to database 'dbname'"

Yani "localhost @ kullanıcının 'root' için reddedildi Erişim '" değil, sunucunun adı gibi bir şey yankı gerekir.

Deneyin:

$con = mysql_connect("127.0.0.1","root","pass");

Edit (yorumlar sağlanan daha fazla bilgi Sonrası)

Eğer tamamen farklı bir ana bilgisayardan bağlantı yapıyorsanız, user@remote_hostname_or_ip bağlamak için izin ve bir veritabanı ve kullanıcı oluşturmak için uygun ayrıcalıklar vardır MySQL söylemek zorundayım.

Sen phpmyadmin (MySQL sunucusu) kullanarak oldukça kolay bunu yapmak, ya da bir sorgu gibi yapabilirsiniz:

CREATE USER 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret';

GRANT ALL PRIVILEGES ON * . * TO  'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

Ben, bu kullanıcı 'kök' adlandırma değil, tavsiye, sadece ihtiyaç duyulan küresel ayrıcalıkları her bir kullanıcı yaratacak. Örnekte, ben kolay kolay, sadece emin DNS uygun kurulmuş olduğunu, bir konak ismi olabilir, 192.168.1.1 kullanılır. Eğer uzak sunucuya bağlanmak zaman günlükleri göründüğü gibi exactly maç ev sahibi belirtin.

Ayrıca tadı sınırlarını ayarlamak isteyebilirsiniz. CREATE USER sözdizimi hakkında daha fazla bilgi olabilir found here, GRANT here.

Edit

MySQL 4 kullanıyorsanız - CREATE bir seçenek değildir. Sadece GRANT (4.1 Docs On User Management) kullanmak istiyorsunuz

Edit

C-Panel kullanıyorsanız, sadece use the API. Evet, onun tuhaflıklar var iken, onun daha kolay ad-hoc çalışma arounds yerine kullandığı malzeme korumak için. Başarılı uygulamaları bir çok sorunu olmadan kullanabilirsiniz. Başka bir API gibi, bunu kullanırken değişikliklerin üstünde kalmak gerekir.

Ben ({[) (1]} gibi) varolan bir veritabanına (root kullanıcı ile) bir bağlantı oluşturmak ve sonra oluşturmak sorgu çalıştırmak gerekiyor inanıyorum.

You don't see a database connect in this example for the obvious reason: it is supposed that you learned already that any database action requires connect first.
It's the way the books being written: the things from the previous lessons being omitted in the next ones. Or every chapter will be 2 times bigger and you'll never finish the book.

Yani evet, siz) (mysql_connect kullanarak, ilk veritabanına bağlanmak gerekir.

Bir kullanıcı oluşturmak için size mysql kullanabilirsiniz GRANT query

Ben komut değil, kabuğundan yapmadım ediyorum ama sadece

Önce sql sunucusuna bağlanmak gerekir:

$conn=@mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
    or die("Err:Conn");

Sonra sorgu yürütmek olacaktır. Barındırma paylaşılan sunucular Bir çok olsa PHP ile veritabanlarının oluşturulmasını devre dışı bırakın.