GRANTSELECT,INDEX,INSERT,DROP,CREATETEMPORARYTABLESONlooker_tmp.*TO'looker'@'%';-- Note that the looker_tmp schema does not need to actually exist,-- even though these permission grants are still needed
设置 max_allowed_packet 变量
对于 MySQL,请将 MySQL max_allowed_packet 变量设置为最大值 1073741824,以防止出现“SQLException: Packet for query is too large”错误。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-08-25。"],[],[],null,["# MySQL, MariaDB, and SingleStore\n\nDialects that use these instructions\n------------------------------------\n\nMySQL, MariaDB, and SingleStore (formerly MemSQL) share the database setup requirements described on this page.\n\nEncrypting network traffic\n--------------------------\n\nIt is a best practice to encrypt network traffic between the Looker application and your database. Consider one of the options described on the [Enabling secure database access](/looker/docs/enabling-secure-db-access) documentation page.\n\nIf you're interested in using SSL encryption, see this [MySQL documentation page](https://dev.mysql.com/doc/refman/5.7/en/encrypted-connections.html).\n\nUsers and security\n------------------\n\nTo create and grant the required access to the Looker user, follow the instructions in the section appropriate to your database dialect and version:\n\n### MySQL 8.0.X:\n\n| **Note:** The Looker MySQL 8.0.X dialect option is implemented with the patch version 8.0.12+ because of a [MySQL deprecation](https://dev.mysql.com/worklog/task/?id=8693) in implicit sorting in the `GROUP BY` clause. This affects Looker subtotals for MySQL versions 8.0.0 through 8.0.11, causing SQL generation errors. Looker suggests upgrading any MySQL 8.0.X databases to at least 8.0.12 to fully integrate. However, earlier MySQL versions will still work, aside from [subtotals](/looker/docs/table-options#subtotals).\n\nIn MySQL 8.0.X, the default authentication plugin is `caching_sha2_password`. Looker uses the `mysql_native_password` plugin\nto attempt to authenticate to MySQL databases through the JDBC driver. For this version of MySQL to work properly,\nyou must take the following additional steps:\n\n1. Configure the MySQL database to use the `mysql_native_password` plugin. This can be done in multiple ways, and will depend on how your MySQL 8 database is deployed and what type of access you have to the configuration:\n\n - Start the process with the flag `--default-auth=mysql_native_password`\n\n - Set the property in the [`my.cnf`](https://dev.mysql.com/doc/refman/8.0/en/option-files.html) configuration file:\n\n [mysqld]\n default-authentication-plugin=mysql_native_password\n\n - If your database instance is hosted through AWS RDS, set the `default_authentication_plugin` parameter through an RDS Parameter Group that is applied to this database instance.\n2. Run the following commands, replacing `some_password_here` with a unique, secure password:\n\n CREATE USER looker IDENTIFIED WITH mysql_native_password BY 'some_password_here';\n GRANT SELECT ON database_name.* TO 'looker'@'%';\n\n### MySQL 5.7.X and earlier, MariaDB, and SingleStore:\n\nRun the following commands, replacing `some_password_here` with a unique, secure password: \n\n CREATE USER looker;\n SET PASSWORD FOR looker = PASSWORD ('some_password_here');\n GRANT SELECT ON database_name.* TO 'looker'@'%';\n\nTemp schema setup for persistent derived tables\n-----------------------------------------------\n\nThese database dialects support the creation of [persistent derived tables (PDTs)](/looker/docs/derived-tables#persistent-derived-tables). This feature can be very useful, and we recommend enabling it when possible.\n\nTo enable PDTs, you need to configure a temp schema. The following commands show an example of creating a temp database and granting the required privileges to the `looker` user.\nYou can specify the name of the temp database in the [**Temp Database**](/looker/docs/connecting-to-your-db#temp_database) field when [creating your database connection](/looker/docs/connecting-to-your-db). If you don't specify a temp database name, Looker generates a scratch database named `looker_tmp`. The following commands use `looker_tmp`, but if you specified a different temp database name, use your temp database name instead of `looker_tmp`. \n\n CREATE SCHEMA looker_tmp;\n GRANT\n SELECT,\n INDEX,\n INSERT,\n UPDATE,\n DELETE,\n CREATE,\n DROP,\n ALTER,\n CREATE TEMPORARY TABLES\n ON looker_tmp.* TO 'looker'@'%';\n\nFor SingleStore, or if your database uses GTID-based replication, you must use the [`create_process`](/looker/docs/reference/param-view-create-process) LookML parameter to use PDTs, because GTID does not support `CREATE TABLE AS SELECT` statements.\n\nAlternative setup for regular derived tables\n--------------------------------------------\n\nIf you do not want to allow the creation of [persistent derived tables](/looker/docs/derived-tables#persistent-derived-tables), you can still use [regular derived tables](/looker/docs/derived-tables#regular-or-ephemeral-derived-tables). To use regular derived tables, you still need to add certain permissions to a schema called `looker_tmp`. However, the `looker_tmp` schema does not actually need to exist in your database! \n\n GRANT\n SELECT,\n INDEX,\n INSERT,\n DROP,\n CREATE TEMPORARY TABLES\n ON looker_tmp.* TO 'looker'@'%';\n -- Note that the looker_tmp schema does not need to actually exist,\n -- even though these permission grants are still needed\n\nSetting the `max_allowed_packet` variable\n-----------------------------------------\n\nFor MySQL, set the MySQL `max_allowed_packet` variable to its maximum value, 1073741824, to prevent \"SQLException: Packet for query is too large\" errors.\n\nCreating the Looker connection to your database\n-----------------------------------------------\n\nAfter completing the database configuration, you can connect to the database from Looker. Follow these steps to create the connection from Looker to your database:\n\n1. In the **Admin** section of Looker, select **Connections** , and then click **Add Connection**.\n2. From the **Dialect** drop-down menu, select your database dialect name: **MySQL** , **MySQL 8.0.12+** , **MariaDB** , **SingleStore** , or **SingleStore 7+**.\n\n | **Note:** If you are on a [Looker (Google Cloud core)](/looker/docs/looker-core-overview) instance and you don't see your dialect listed in the **Dialect** drop-down menu, see the [Looker (Google Cloud core) documentation](/looker/docs/looker-core-dialects#supported_dialects_for) to verify that the dialect is supported for Looker (Google Cloud core) instances.\n3. Fill out the connection details. The majority of the settings are common to most database dialects. See the [Connecting Looker to your database](/looker/docs/connecting-to-your-db) documentation page for information.\n\n4. To verify that the connection is successful, click **Test** . See the [Testing database connectivity](/looker/docs/testing-db-connectivity) documentation page for troubleshooting information.\n\n5. To save these settings, click **Connect**.\n\nFeature support\n---------------\n\nFor Looker to support some features, your database dialect must also support them.\n\nMySQL supports the following features as of Looker 25.14:\n\nMySQL 8.0.12+ supports the following features as of Looker 25.14:\n\nMariaDB supports the following features as of Looker 25.14:\n\nSingleStore supports the following features as of Looker 25.14:\n\nSingleStore 7+ supports the following features as of Looker 25.14:"]]