Как мы можем дать разрешение пользователю на создание базы данных в phpmyadmin(cPanel)?

У меня есть база данных и пользователь, который создается через cpanel(я добавил этого пользователя в эту базу данных, и я могу получить доступ к этой базе данных, используя этого пользователя и его пароль. Я дал все привилегии этому пользователю через cPanel(нажав на имя пользователя в таблице "текущая база данных" в cpanel и отметка флажка "все привилегии").

В моем приложении (которое создается с использованием PHP- Codeigniter Framework) я хочу создать новую базу данных и таблицы в этой базе данных в соответствии с требованиями пользователей. Для этого я использую класс 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 нет.

Для именования базы данных я использовал префикс_ в имени базы данных (формат имен базы данных CPanel)

Как я могу создать базу данных, используя класс dbforge, и получить доступ к этой базе данных, используя существующего пользователя...?

1 ответ

Попробуйте сначала создать суперпользователя

mysql > GRANT ALL PRIVILEGES on databasename.* TO "username"@"localhost" IDENTIFIED BY "password";
Другие вопросы по тегам