2012-09-06 3 views
0

J'ai une base de données et un utilisateur qui est créé par cpanel (j'ai ajouté cet utilisateur à cette base de données et je suis capable d'accéder à cette base de données en utilisant cet utilisateur et son mot de passe.J'ai donné tous les privilèges à cPanel cliquez sur le nom d'utilisateur dans la table 'base de données courante' dans cpanel et en cliquant sur tous les privilèges caseComment pouvons-nous autoriser un utilisateur à créer une base de données dans phpmyadmin (cPanel)?

Dans mon application (qui est créée en utilisant PHP-Codeigniter framework) je veux créer une nouvelle base de données et des tables dans cette base de données selon l'exigence des utilisateurs. pour que j'utilise la classe Codeigniter de dbforge pour créer la base de données et les tables qui.

$this->load->dbforge(); 
     if ($this->dbforge->create_database($database_name)){ 

      $config['hostname'] = "localhost"; 
      $config['username'] = "user_name"; 
      $config['password'] = "users_password"; 
      $config['database'] = $database_name; 
      $config['dbdriver'] = "mysql"; 
      $config['dbprefix'] = ""; 
      $config['pconnect'] = TRUE; 
      $config['db_debug'] = TRUE; 
      $config['cache_on'] = FALSE; 
      $config['cachedir'] = ""; 
      $config['char_set'] = "utf8"; 
      $config['dbcollat'] = "utf8_general_ci"; 
      $config['swap_pre'] = ''; 
      $config['autoinit'] = TRUE; 
      $config['stricton'] = FALSE; 

      $db_new=$this->load->database($config,TRUE); 

      $this->db=$db_new; 
      $this->load->dbforge(); 
      $fields=array(
       'id'=>array('type'=>'INT','auto_increment'=>TRUE,'constraint'=>'5'), 
       'first_name'=>array('type'=>'VARCHAR','constraint'=>'60'), 
       'last_name'=>array('type'=>'VARCHAR','constraint'=>'60','null' => TRUE), 
      ); 

      $this->dbforge->add_field($fields); 
      $this->dbforge->add_key('id',TRUE); 
      $this->dbforge->create_table('clients'); 

     } 

dans le ci-dessus le code je crée d'abord une base de données et puis chargeant cette base de données en tant que base de données courante. Ce code fonctionne parfaitement dans le serveur WAMP hôte local, mais quand j'uploadé sur le serveur, puis a essayé de créer la base de données donne l'erreur suivante

Error No 1044: Access denied for user 'username'@'localhost' to database 'database_name' 

La ligne de code qui a provoqué Thr erreur est

if ($this->dbforge->create_database($database_name)){ 

* Dans ce paramètre de configuration de base de données indiqué dans le code ci-dessus, le nom d'utilisateur et le mot de passe sont donnés comme nom d'utilisateur et mot de passe de la base de données existante (cPanel). Est-ce le problème ...? *.

L'utilisateur actuel avec lequel nous essayons de créer une nouvelle base de données possède tous les privilèges disponibles. mais dans ce privilège 'CREATE DATABASE' n'est pas là.

pour nommer la base de données que j'ai utilisé le « prefix_ » au nom de la base de données (base de données cpanel format de nommage)

Comment puis-je créer la base de données en utilisant dbforge classe et l'accès à cette base de données à l'aide d'un utilisateur existant .. ?

+0

Je pense que vous ne serez pas en mesure de créer une base de données avec cet utilisateur. Vous pouvez créer une nouvelle base de données via CPanel, mais je ne suis pas sûr que vous serez en mesure de créer un utilisateur ayant accès aux deux bases de données. Peut-être que vous pouvez contacter le fournisseur d'hébergement? –

+0

@ Lex-'créer un utilisateur qui a accès aux deux bases de données '- signifie que je dois créer la base de données via le cPanel et ajouter un utilisateur existant à cette base de données nouvellement créée via cPanel ...?. – Sanjay

Répondre

1

Essayez créer un super nouvel utilisateur

mysql > GRANT ALL PRIVILEGES on databasename.* TO "username"@"localhost" IDENTIFIED BY "password"; 
Questions connexes