如何在不更改配置文件的情况下将 mysql character_set_database 设置为 utf8mb4?(因为我无权访问这些文件)

How can I set mysql character_set_database as utf8mb4 without changing the config file?(since I have no access to the files)

我正在使用 AWS Lightsail MySQL 并且我正在尝试将编码设置为 utf8mb4。我能够使用命令

设置一些变量
SET NAMES utf8mb4;
ALTER DATABASE etl_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

结果是

+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | latin1             |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | latin1             |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_general_ci |
| collation_database       | latin1_swedish_ci  |
| collation_server         | latin1_swedish_ci  |
+--------------------------+--------------------+

但我找不到更改 character_set_database 或其他内容的方法。网上的解决方案都是关于更改配置文件的。但是,由于我使用的是 AWS Lightsail MySQL 服务,因此我无权访问这些文件。那我该如何更改其余变量的编码?

顺便说一句,我想知道为什么我可以在 mysql 中更改某些内容,而我只能在 my.cnf 中更改其他内容?我可以在 mysql 内设置 buffer_size 吗?

Lightsail 数据库参数可使用 aws-cli 配置。

https://lightsail.aws.amazon.com/ls/docs/en/articles/amazon-lightsail-updating-database-parameters

您可以临时更改一些值,因为这些变量的值是特定于连接的 SET NAMES 只会更改您当前的连接,不会更改与服务器本身的所有连接的默认值。

ALTER DATABASE etl_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

仅更改该数据库的默认值。该默认值仅在您执行 CREATE TABLE 而不指定字符集或排序规则时使用(?)。

简单的解决方法是在创建表时始终指定字符集 and/or 排序规则。无论如何,这是一个很好的做法。