步骤 3:创建数据库
如果您在测试站点上安装 Drupal,可以跳过此步骤。在运行安装脚本(下一步)时,只需提供具有创建数据库权限的数据库用户的用户名和密码即可。
如果您在公共 Web 服务器上安装 Drupal,建议先创建数据库,并为其分配一个权限较少的数据库用户。您在安装过程中输入的数据库用户将用于每次加载页面时连接数据库。
本页提供多种创建 Drupal 数据库的方法:
- 基于 Web 浏览器的控制面板(如 CPanel 或 Plesk)
- PhpMyAdmin
- 使用 SQL 命令(通过命令行)
- 使用 MySQL / MariaDB 命令
- 使用 PostgreSQL 命令
MySQL / MariaDB 数据库名称的字符限制
- 如果在数据库名称中使用大写字母,它们会自动转换为小写。
- 允许的字符:a–z、0–9 和“_”(下划线)。
通过基于浏览器的控制面板创建数据库和用户
大多数主机账户提供基于 Web 的控制面板,用于管理网站。这些面板通常带有创建新数据库和分配数据库用户的简易工具。请参考您的主机服务商文档或联系其支持以获取具体操作步骤。
在为数据库创建用户时,您可能会看到一页可选项,允许您设置用户对数据库的访问权限。在大多数“数据库向导”界面中,勾选“全部(All)”权限即可(但取消“Grant”权限的勾选),这样用户就能正确访问数据库。
请记录用户名、密码、数据库名和主机名。例如:您正在 http://example.com、http://drupal.example.com 或 http://example.com/blog 安装网站。您将在运行安装脚本时在浏览器中输入这些信息。
注意:通过 Web 界面创建数据库和用户时,主机控制面板登录用户名通常会作为前缀自动添加到数据库名和用户名中。例如,如果您以 “webadmin” 登录并创建数据库 “drupal8db”,用户 “d8user”,那么在安装时可能需要输入 “webadmin_drupal8db” 和 “webadmin_d8user”。这是因为共享主机要求数据库名和用户名在服务器上全局唯一。
使用 phpMyAdmin 创建数据库和用户
使用 phpMyAdmin 创建数据库的最安全方法是为新数据库创建一个专用用户,并仅赋予该用户该数据库的全部权限。这比在服务器上所有网站共用一个数据库账户更安全。
注意:以下步骤假设您具有 phpMyAdmin 的 root 访问权限,并使用 phpMyAdmin 3.5.x。
- 以 root 用户登录 phpMyAdmin。
- 点击“Users”,然后点击“Add user”。
- 在“用户名”字段中输入所需用户名。
- 在“Host”字段中选择“Local”,这是更安全的选项,除非您需要从远程服务器访问数据库。
- 输入或生成用户密码。
- 在“Database for user”部分选择“创建数据库并赋予全部权限”。
- 确保选择的字符集为 utf8mb4_unicode_ci 或 utf8mb4_general_ci。
- 说明:这两种排序规则的区别在于字符比较与排序方式。utf8mb4_general_ci 略快,但 utf8mb4_unicode_ci 对国际字符更准确。建议选择 utf8mb4_unicode_ci。
- 说明:如果在创建数据库时未能选择排序规则,可在数据库创建后进入“操作(Operations)”菜单进行修改。
8. 点击“Go”以创建用户和数据库。
phpMyAdmin 会创建与用户名相同的数据库名称。如果您希望数据库与用户名称不同:
- 点击“Databases”,选择要重命名的数据库。
- 点击“Operations”。
- 在“Rename database to”字段输入新数据库名称。
- 点击“Go”保存。
如需更多 phpMyAdmin 使用帮助,请参阅 官方 Wiki。
使用命令行创建数据库
如果您不使用控制面板,且熟悉 MySQL、MariaDB 或 PostgreSQL 命令,可以使用以下命令行方法创建数据库。
关于使用命令行创建数据库和设置权限的更多信息,请参阅 INSTALL.mysql.txt(适用于 MySQL/MariaDB)或 INSTALL.pgsql.txt(适用于 PostgreSQL)。
使用 MySQL / MariaDB 命令创建数据库
注意:数据库必须使用 UTF-8 (utf8mb4) 编码,并选择 utf8mb4_unicode_ci 或 utf8mb4_general_ci 排序规则。如果不确定,请使用 utf8mb4_unicode_ci。
MySQL 官方文档:http://dev.mysql.com/doc/refman/5.7/en/index.html
MariaDB 官方文档:https://mariadb.com/kb/en/
以下示例中,“username” 是数据库用户,“databasename” 是数据库名。
mysql -u username -p -e "CREATE DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci";
此命令会提示输入“username”的密码,然后创建数据库。
接着登录 MySQL:
mysql -u username -p
在 MySQL 提示符中执行以下命令创建用户并赋予权限:
CREATE USER username@localhost IDENTIFIED BY 'password'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON databasename.* TO 'username'@'localhost' IDENTIFIED BY 'password';
注意:如果数据库名包含下划线 (_) 或其他特殊符号,请使用反引号 (`) 包裹数据库名。下划线是通配符,若未转义,可能意外授予对其他数据库的访问权限。例如,应使用 `drupal\_test\_account`.* 而非 drupal_test_account.*。
提示 1:数据库用户必须拥有以上权限(除 CREATE TEMPORARY TABLES 可选外),否则 Drupal 无法正常运行。
提示 2:若需使用 Drush 导入数据库转储文件,请添加 LOCK TABLES 权限。
更多 GRANT 命令说明请参阅:http://dev.mysql.com/doc/refman/5.0/en/grant.html
databasename
- 数据库名称username
- MySQL/MariaDB 用户名localhost
- Drupal 所在主机password
- 用户密码
执行成功后,您会看到:
Query OK, 0 rows affected
刷新权限:
FLUSH PRIVILEGES;
退出 MySQL:
exit
系统将返回:
Bye
使用 PostgreSQL 创建数据库
数据库必须使用 UTF-8 (Unicode) 编码。
1. 创建数据库用户
如果您尚未为 PostgreSQL 设置用户,请运行以下命令:
createuser --pwprompt --encrypted --no-adduser --no-createdb username
如果成功,系统将显示 “CREATE USER”。
2. 创建数据库
使用以下命令创建数据库,并指定前面创建的用户为所有者:
createdb --encoding=UNICODE --owner=username databasename
成功后,系统将显示 “CREATE DATABASE”。