0

cpanel を介して作成されたデータベースとユーザーがあります (そのユーザーをそのデータベースに追加し、そのユーザーとそのパスワードを使用してそのデータベースにアクセスできます。cPanel を介してそのユーザーにすべての権限を与えました (をクリックして) cpanelの「現在のデータベース」テーブルのユーザー名とすべての権限チェックボックスをクリックします)。

私のアプリケーション (PHP-Codeigniter フレームワークを使用して作成されたもの) では、ユーザーの要件に従って、そのデータベースに新しいデータベースとテーブルを作成したいと考えています。そのために、データベースとその中のテーブルを作成するために Codeigniter dbforge クラスを使用しています。

$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');

        }

上記のコードでは、最初にデータベースを作成してから、そのデータベースを現在のデータベースとしてロードしています。このコードはローカルホストの WAMP サーバーで完全に機能しますが、サーバーにアップロードしてからデータベースを作成しようとすると、次のエラーが発生します

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

エラーの原因となったコード行は次のとおりです。

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

*上記のコードに示されているデータベース構成設定では、「ユーザー名」と「パスワード」は、既存のデータベース (cPanel で作成されたもの) のユーザー名とパスワードとして指定されます。それが問題か…?* .

新しいデータベースを作成しようとしている現在のユーザーは、利用可能なすべての権限を持っています。しかし、その「CREATE DATABASE」権限はありません。

データベースの命名には、データベース名に「prefix_」を使用しました (CPanel データベースの命名形式)

dbforge クラスを使用してデータベースを作成し、既存のユーザーを使用してそのデータベースにアクセスするにはどうすればよいですか?

4

1 に答える 1

1

最初にスーパーユーザーを作成してみてください

mysql > GRANT ALL PRIVILEGES on databasename.* TO "username"@"localhost" IDENTIFIED BY "password";
于 2012-09-08T13:43:41.030 に答える