{"name":"mysql","version":"3.2.14","description":"A Pulumi package for creating and managing mysql cloud resources.","keywords":["pulumi","mysql"],"homepage":"https://pulumi.io","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`mysql` Terraform Provider](https://github.com/terraform-providers/terraform-provider-mysql).","repository":"https://github.com/pulumi/pulumi-mysql","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*-*"},"namespaces":{"mysql":"MySql"},"compatibility":"tfbridge20","respectSchemaVersion":true},"go":{"importBasePath":"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql","generateResourceContainerTypes":true,"generateExtraInputTypes":true,"respectSchemaVersion":true},"nodejs":{"packageDescription":"A Pulumi package for creating and managing mysql cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-mysql)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-mysql` repo](https://github.com/pulumi/pulumi-mysql/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-mysql` repo](https://github.com/terraform-providers/terraform-provider-mysql/issues).","dependencies":{"@pulumi/pulumi":"^3.0.0-alpha.0"},"devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true,"respectSchemaVersion":true},"python":{"requires":{"pulumi":"\u003e=3.0.0a1,\u003c4.0.0"},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-mysql)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-mysql` repo](https://github.com/pulumi/pulumi-mysql/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-mysql` repo](https://github.com/terraform-providers/terraform-provider-mysql/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"authenticationPlugin":{"type":"string"},"endpoint":{"type":"string"},"maxConnLifetimeSec":{"type":"integer"},"maxOpenConns":{"type":"integer"},"password":{"type":"string"},"proxy":{"type":"string","defaultInfo":{"environment":["ALL_PROXY","all_proxy"]}},"tls":{"type":"string","default":"false","defaultInfo":{"environment":["MYSQL_TLS_CONFIG"]}},"username":{"type":"string"}},"defaults":["endpoint","username"]},"provider":{"description":"The provider type for the mysql package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"authenticationPlugin":{"type":"string"},"endpoint":{"type":"string"},"maxConnLifetimeSec":{"type":"integer"},"maxOpenConns":{"type":"integer"},"password":{"type":"string"},"proxy":{"type":"string"},"tls":{"type":"string"},"username":{"type":"string"}},"inputProperties":{"authenticationPlugin":{"type":"string"},"endpoint":{"type":"string"},"maxConnLifetimeSec":{"type":"integer"},"maxOpenConns":{"type":"integer"},"password":{"type":"string"},"proxy":{"type":"string","defaultInfo":{"environment":["ALL_PROXY","all_proxy"]}},"tls":{"type":"string","default":"false","defaultInfo":{"environment":["MYSQL_TLS_CONFIG"]}},"username":{"type":"string"}},"methods":{"terraformConfig":"pulumi:providers:mysql/terraformConfig"}},"resources":{"mysql:index/database:Database":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`mysql.Database`\" pulumi-lang-dotnet=\"`mysql.Database`\" pulumi-lang-go=\"`Database`\" pulumi-lang-python=\"`Database`\" pulumi-lang-yaml=\"`mysql.Database`\" pulumi-lang-java=\"`mysql.Database`\"\u003e`mysql.Database`\u003c/span\u003e` resource creates and manages a database on a MySQL\nserver.\n\n\u003e **Caution:** The `\u003cspan pulumi-lang-nodejs=\"`mysql.Database`\" pulumi-lang-dotnet=\"`mysql.Database`\" pulumi-lang-go=\"`Database`\" pulumi-lang-python=\"`Database`\" pulumi-lang-yaml=\"`mysql.Database`\" pulumi-lang-java=\"`mysql.Database`\"\u003e`mysql.Database`\u003c/span\u003e` resource can completely delete your\ndatabase just as easily as it can create it. To avoid costly accidents,\nconsider setting\n[`\u003cspan pulumi-lang-nodejs=\"`preventDestroy`\" pulumi-lang-dotnet=\"`PreventDestroy`\" pulumi-lang-go=\"`preventDestroy`\" pulumi-lang-python=\"`prevent_destroy`\" pulumi-lang-yaml=\"`preventDestroy`\" pulumi-lang-java=\"`preventDestroy`\"\u003e`prevent_destroy`\u003c/span\u003e`](https://www.terraform.io/docs/configuration/resources.html#prevent_destroy)\non your database resources as an extra safety measure.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as mysql from \"@pulumi/mysql\";\n\nconst app = new mysql.Database(\"app\", {name: \"my_awesome_app\"});\n```\n```python\nimport pulumi\nimport pulumi_mysql as mysql\n\napp = mysql.Database(\"app\", name=\"my_awesome_app\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing MySql = Pulumi.MySql;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new MySql.Database(\"app\", new()\n    {\n        Name = \"my_awesome_app\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mysql.NewDatabase(ctx, \"app\", \u0026mysql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_awesome_app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.mysql.Database;\nimport com.pulumi.mysql.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var app = new Database(\"app\", DatabaseArgs.builder()\n            .name(\"my_awesome_app\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: mysql:Database\n    properties:\n      name: my_awesome_app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabases can be imported using their name, e.g.\n\n```sh\n$ pulumi import mysql:index/database:Database example my-example-database\n```\n\n","properties":{"defaultCharacterSet":{"type":"string","description":"The default character set to use when\na table is created without specifying an explicit character set. Defaults\nto \"utf8\".\n"},"defaultCollation":{"type":"string","description":"The default collation to use when a table\nis created without specifying an explicit collation. Defaults to\n`\u003cspan pulumi-lang-nodejs=\"`utf8GeneralCi`\" pulumi-lang-dotnet=\"`Utf8GeneralCi`\" pulumi-lang-go=\"`utf8GeneralCi`\" pulumi-lang-python=\"`utf8_general_ci`\" pulumi-lang-yaml=\"`utf8GeneralCi`\" pulumi-lang-java=\"`utf8GeneralCi`\"\u003e`utf8_general_ci`\u003c/span\u003e`. Each character set has its own set of collations, so\nchanging the character set requires also changing the collation.\n\nNote that the defaults for character set and collation above do not respect\nany defaults set on the MySQL server, so that the configuration can be set\nappropriately even though Terraform cannot see the server-level defaults. If\nyou wish to use the server's defaults you must consult the server's\nconfiguration and then set the `\u003cspan pulumi-lang-nodejs=\"`defaultCharacterSet`\" pulumi-lang-dotnet=\"`DefaultCharacterSet`\" pulumi-lang-go=\"`defaultCharacterSet`\" pulumi-lang-python=\"`default_character_set`\" pulumi-lang-yaml=\"`defaultCharacterSet`\" pulumi-lang-java=\"`defaultCharacterSet`\"\u003e`default_character_set`\u003c/span\u003e` and\n`\u003cspan pulumi-lang-nodejs=\"`defaultCollation`\" pulumi-lang-dotnet=\"`DefaultCollation`\" pulumi-lang-go=\"`defaultCollation`\" pulumi-lang-python=\"`default_collation`\" pulumi-lang-yaml=\"`defaultCollation`\" pulumi-lang-java=\"`defaultCollation`\"\u003e`default_collation`\u003c/span\u003e` to match.\n"},"name":{"type":"string","description":"The name of the database. This must be unique within\na given MySQL server and may or may not be case-sensitive depending on\nthe operating system on which the MySQL server is running.\n"}},"required":["name"],"inputProperties":{"defaultCharacterSet":{"type":"string","description":"The default character set to use when\na table is created without specifying an explicit character set. Defaults\nto \"utf8\".\n"},"defaultCollation":{"type":"string","description":"The default collation to use when a table\nis created without specifying an explicit collation. Defaults to\n`\u003cspan pulumi-lang-nodejs=\"`utf8GeneralCi`\" pulumi-lang-dotnet=\"`Utf8GeneralCi`\" pulumi-lang-go=\"`utf8GeneralCi`\" pulumi-lang-python=\"`utf8_general_ci`\" pulumi-lang-yaml=\"`utf8GeneralCi`\" pulumi-lang-java=\"`utf8GeneralCi`\"\u003e`utf8_general_ci`\u003c/span\u003e`. Each character set has its own set of collations, so\nchanging the character set requires also changing the collation.\n\nNote that the defaults for character set and collation above do not respect\nany defaults set on the MySQL server, so that the configuration can be set\nappropriately even though Terraform cannot see the server-level defaults. If\nyou wish to use the server's defaults you must consult the server's\nconfiguration and then set the `\u003cspan pulumi-lang-nodejs=\"`defaultCharacterSet`\" pulumi-lang-dotnet=\"`DefaultCharacterSet`\" pulumi-lang-go=\"`defaultCharacterSet`\" pulumi-lang-python=\"`default_character_set`\" pulumi-lang-yaml=\"`defaultCharacterSet`\" pulumi-lang-java=\"`defaultCharacterSet`\"\u003e`default_character_set`\u003c/span\u003e` and\n`\u003cspan pulumi-lang-nodejs=\"`defaultCollation`\" pulumi-lang-dotnet=\"`DefaultCollation`\" pulumi-lang-go=\"`defaultCollation`\" pulumi-lang-python=\"`default_collation`\" pulumi-lang-yaml=\"`defaultCollation`\" pulumi-lang-java=\"`defaultCollation`\"\u003e`default_collation`\u003c/span\u003e` to match.\n"},"name":{"type":"string","description":"The name of the database. This must be unique within\na given MySQL server and may or may not be case-sensitive depending on\nthe operating system on which the MySQL server is running.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Database resources.\n","properties":{"defaultCharacterSet":{"type":"string","description":"The default character set to use when\na table is created without specifying an explicit character set. Defaults\nto \"utf8\".\n"},"defaultCollation":{"type":"string","description":"The default collation to use when a table\nis created without specifying an explicit collation. Defaults to\n`\u003cspan pulumi-lang-nodejs=\"`utf8GeneralCi`\" pulumi-lang-dotnet=\"`Utf8GeneralCi`\" pulumi-lang-go=\"`utf8GeneralCi`\" pulumi-lang-python=\"`utf8_general_ci`\" pulumi-lang-yaml=\"`utf8GeneralCi`\" pulumi-lang-java=\"`utf8GeneralCi`\"\u003e`utf8_general_ci`\u003c/span\u003e`. Each character set has its own set of collations, so\nchanging the character set requires also changing the collation.\n\nNote that the defaults for character set and collation above do not respect\nany defaults set on the MySQL server, so that the configuration can be set\nappropriately even though Terraform cannot see the server-level defaults. If\nyou wish to use the server's defaults you must consult the server's\nconfiguration and then set the `\u003cspan pulumi-lang-nodejs=\"`defaultCharacterSet`\" pulumi-lang-dotnet=\"`DefaultCharacterSet`\" pulumi-lang-go=\"`defaultCharacterSet`\" pulumi-lang-python=\"`default_character_set`\" pulumi-lang-yaml=\"`defaultCharacterSet`\" pulumi-lang-java=\"`defaultCharacterSet`\"\u003e`default_character_set`\u003c/span\u003e` and\n`\u003cspan pulumi-lang-nodejs=\"`defaultCollation`\" pulumi-lang-dotnet=\"`DefaultCollation`\" pulumi-lang-go=\"`defaultCollation`\" pulumi-lang-python=\"`default_collation`\" pulumi-lang-yaml=\"`defaultCollation`\" pulumi-lang-java=\"`defaultCollation`\"\u003e`default_collation`\u003c/span\u003e` to match.\n"},"name":{"type":"string","description":"The name of the database. This must be unique within\na given MySQL server and may or may not be case-sensitive depending on\nthe operating system on which the MySQL server is running.\n","willReplaceOnChanges":true}},"type":"object"}},"mysql:index/grant:Grant":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`mysql.Grant`\" pulumi-lang-dotnet=\"`mysql.Grant`\" pulumi-lang-go=\"`Grant`\" pulumi-lang-python=\"`Grant`\" pulumi-lang-yaml=\"`mysql.Grant`\" pulumi-lang-java=\"`mysql.Grant`\"\u003e`mysql.Grant`\u003c/span\u003e` resource creates and manages privileges given to\na user on a MySQL server.\n\n## Granting Privileges to a User\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as mysql from \"@pulumi/mysql\";\n\nconst jdoe = new mysql.User(\"jdoe\", {\n    user: \"jdoe\",\n    host: \"example.com\",\n    plaintextPassword: \"password\",\n});\nconst jdoeGrant = new mysql.Grant(\"jdoe\", {\n    user: jdoe.user,\n    host: jdoe.host,\n    database: \"app\",\n    privileges: [\n        \"SELECT\",\n        \"UPDATE\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_mysql as mysql\n\njdoe = mysql.User(\"jdoe\",\n    user=\"jdoe\",\n    host=\"example.com\",\n    plaintext_password=\"password\")\njdoe_grant = mysql.Grant(\"jdoe\",\n    user=jdoe.user,\n    host=jdoe.host,\n    database=\"app\",\n    privileges=[\n        \"SELECT\",\n        \"UPDATE\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing MySql = Pulumi.MySql;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var jdoe = new MySql.User(\"jdoe\", new()\n    {\n        UserName = \"jdoe\",\n        Host = \"example.com\",\n        PlaintextPassword = \"password\",\n    });\n\n    var jdoeGrant = new MySql.Grant(\"jdoe\", new()\n    {\n        User = jdoe.UserName,\n        Host = jdoe.Host,\n        Database = \"app\",\n        Privileges = new[]\n        {\n            \"SELECT\",\n            \"UPDATE\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tjdoe, err := mysql.NewUser(ctx, \"jdoe\", \u0026mysql.UserArgs{\n\t\t\tUser:              pulumi.String(\"jdoe\"),\n\t\t\tHost:              pulumi.String(\"example.com\"),\n\t\t\tPlaintextPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mysql.NewGrant(ctx, \"jdoe\", \u0026mysql.GrantArgs{\n\t\t\tUser:     jdoe.User,\n\t\t\tHost:     jdoe.Host,\n\t\t\tDatabase: pulumi.String(\"app\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\tpulumi.String(\"UPDATE\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.mysql.User;\nimport com.pulumi.mysql.UserArgs;\nimport com.pulumi.mysql.Grant;\nimport com.pulumi.mysql.GrantArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var jdoe = new User(\"jdoe\", UserArgs.builder()\n            .user(\"jdoe\")\n            .host(\"example.com\")\n            .plaintextPassword(\"password\")\n            .build());\n\n        var jdoeGrant = new Grant(\"jdoeGrant\", GrantArgs.builder()\n            .user(jdoe.user())\n            .host(jdoe.host())\n            .database(\"app\")\n            .privileges(            \n                \"SELECT\",\n                \"UPDATE\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  jdoe:\n    type: mysql:User\n    properties:\n      user: jdoe\n      host: example.com\n      plaintextPassword: password\n  jdoeGrant:\n    type: mysql:Grant\n    name: jdoe\n    properties:\n      user: ${jdoe.user}\n      host: ${jdoe.host}\n      database: app\n      privileges:\n        - SELECT\n        - UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Granting Privileges to a Role\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as mysql from \"@pulumi/mysql\";\n\nconst developer = new mysql.Role(\"developer\", {name: \"developer\"});\nconst developerGrant = new mysql.Grant(\"developer\", {\n    role: developer.name,\n    database: \"app\",\n    privileges: [\n        \"SELECT\",\n        \"UPDATE\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_mysql as mysql\n\ndeveloper = mysql.Role(\"developer\", name=\"developer\")\ndeveloper_grant = mysql.Grant(\"developer\",\n    role=developer.name,\n    database=\"app\",\n    privileges=[\n        \"SELECT\",\n        \"UPDATE\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing MySql = Pulumi.MySql;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var developer = new MySql.Role(\"developer\", new()\n    {\n        Name = \"developer\",\n    });\n\n    var developerGrant = new MySql.Grant(\"developer\", new()\n    {\n        Role = developer.Name,\n        Database = \"app\",\n        Privileges = new[]\n        {\n            \"SELECT\",\n            \"UPDATE\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdeveloper, err := mysql.NewRole(ctx, \"developer\", \u0026mysql.RoleArgs{\n\t\t\tName: pulumi.String(\"developer\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mysql.NewGrant(ctx, \"developer\", \u0026mysql.GrantArgs{\n\t\t\tRole:     developer.Name,\n\t\t\tDatabase: pulumi.String(\"app\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\tpulumi.String(\"UPDATE\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.mysql.Role;\nimport com.pulumi.mysql.RoleArgs;\nimport com.pulumi.mysql.Grant;\nimport com.pulumi.mysql.GrantArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var developer = new Role(\"developer\", RoleArgs.builder()\n            .name(\"developer\")\n            .build());\n\n        var developerGrant = new Grant(\"developerGrant\", GrantArgs.builder()\n            .role(developer.name())\n            .database(\"app\")\n            .privileges(            \n                \"SELECT\",\n                \"UPDATE\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  developer:\n    type: mysql:Role\n    properties:\n      name: developer\n  developerGrant:\n    type: mysql:Grant\n    name: developer\n    properties:\n      role: ${developer.name}\n      database: app\n      privileges:\n        - SELECT\n        - UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Adding a Role to a User\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as mysql from \"@pulumi/mysql\";\n\nconst jdoe = new mysql.User(\"jdoe\", {\n    user: \"jdoe\",\n    host: \"example.com\",\n    plaintextPassword: \"password\",\n});\nconst developer = new mysql.Role(\"developer\", {name: \"developer\"});\nconst developerGrant = new mysql.Grant(\"developer\", {\n    user: jdoe.user,\n    host: jdoe.host,\n    database: \"app\",\n    roles: [developer.name],\n});\n```\n```python\nimport pulumi\nimport pulumi_mysql as mysql\n\njdoe = mysql.User(\"jdoe\",\n    user=\"jdoe\",\n    host=\"example.com\",\n    plaintext_password=\"password\")\ndeveloper = mysql.Role(\"developer\", name=\"developer\")\ndeveloper_grant = mysql.Grant(\"developer\",\n    user=jdoe.user,\n    host=jdoe.host,\n    database=\"app\",\n    roles=[developer.name])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing MySql = Pulumi.MySql;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var jdoe = new MySql.User(\"jdoe\", new()\n    {\n        UserName = \"jdoe\",\n        Host = \"example.com\",\n        PlaintextPassword = \"password\",\n    });\n\n    var developer = new MySql.Role(\"developer\", new()\n    {\n        Name = \"developer\",\n    });\n\n    var developerGrant = new MySql.Grant(\"developer\", new()\n    {\n        User = jdoe.UserName,\n        Host = jdoe.Host,\n        Database = \"app\",\n        Roles = new[]\n        {\n            developer.Name,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tjdoe, err := mysql.NewUser(ctx, \"jdoe\", \u0026mysql.UserArgs{\n\t\t\tUser:              pulumi.String(\"jdoe\"),\n\t\t\tHost:              pulumi.String(\"example.com\"),\n\t\t\tPlaintextPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdeveloper, err := mysql.NewRole(ctx, \"developer\", \u0026mysql.RoleArgs{\n\t\t\tName: pulumi.String(\"developer\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mysql.NewGrant(ctx, \"developer\", \u0026mysql.GrantArgs{\n\t\t\tUser:     jdoe.User,\n\t\t\tHost:     jdoe.Host,\n\t\t\tDatabase: pulumi.String(\"app\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tdeveloper.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.mysql.User;\nimport com.pulumi.mysql.UserArgs;\nimport com.pulumi.mysql.Role;\nimport com.pulumi.mysql.RoleArgs;\nimport com.pulumi.mysql.Grant;\nimport com.pulumi.mysql.GrantArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var jdoe = new User(\"jdoe\", UserArgs.builder()\n            .user(\"jdoe\")\n            .host(\"example.com\")\n            .plaintextPassword(\"password\")\n            .build());\n\n        var developer = new Role(\"developer\", RoleArgs.builder()\n            .name(\"developer\")\n            .build());\n\n        var developerGrant = new Grant(\"developerGrant\", GrantArgs.builder()\n            .user(jdoe.user())\n            .host(jdoe.host())\n            .database(\"app\")\n            .roles(developer.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  jdoe:\n    type: mysql:User\n    properties:\n      user: jdoe\n      host: example.com\n      plaintextPassword: password\n  developer:\n    type: mysql:Role\n    properties:\n      name: developer\n  developerGrant:\n    type: mysql:Grant\n    name: developer\n    properties:\n      user: ${jdoe.user}\n      host: ${jdoe.host}\n      database: app\n      roles:\n        - ${developer.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"database":{"type":"string","description":"The database to grant privileges on.\n"},"grant":{"type":"boolean","description":"Whether to also give the user privileges to grant the same privileges to other users.\n","language":{"csharp":{"name":"GrantName"}}},"host":{"type":"string","description":"The source host of the user. Defaults to \"localhost\". Conflicts with \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\"\u003e`role`\u003c/span\u003e.\n"},"privileges":{"type":"array","items":{"type":"string"},"description":"A list of privileges to grant to the user. Refer to a list of privileges (such as [here](https://dev.mysql.com/doc/refman/5.5/en/grant.html)) for applicable privileges. Conflicts with \u003cspan pulumi-lang-nodejs=\"`roles`\" pulumi-lang-dotnet=\"`Roles`\" pulumi-lang-go=\"`roles`\" pulumi-lang-python=\"`roles`\" pulumi-lang-yaml=\"`roles`\" pulumi-lang-java=\"`roles`\"\u003e`roles`\u003c/span\u003e.\n"},"role":{"type":"string","description":"The role to grant \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e to. Conflicts with \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"A list of rols to grant to the user. Conflicts with \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e.\n"},"table":{"type":"string","description":"Which table to grant \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e on. Defaults to `*`, which is all tables.\n"},"tlsOption":{"type":"string","description":"An TLS-Option for the `GRANT` statement. The value is suffixed to `REQUIRE`. A value of 'SSL' will generate a `GRANT ... REQUIRE SSL` statement. See the [MYSQL `GRANT` documentation](https://dev.mysql.com/doc/refman/5.7/en/grant.html) for more. Ignored if MySQL version is under 5.7.0.\n"},"user":{"type":"string","description":"The name of the user. Conflicts with \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\"\u003e`role`\u003c/span\u003e.\n"}},"required":["database"],"inputProperties":{"database":{"type":"string","description":"The database to grant privileges on.\n","willReplaceOnChanges":true},"grant":{"type":"boolean","description":"Whether to also give the user privileges to grant the same privileges to other users.\n","language":{"csharp":{"name":"GrantName"}},"willReplaceOnChanges":true},"host":{"type":"string","description":"The source host of the user. Defaults to \"localhost\". Conflicts with \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\"\u003e`role`\u003c/span\u003e.\n","willReplaceOnChanges":true},"privileges":{"type":"array","items":{"type":"string"},"description":"A list of privileges to grant to the user. Refer to a list of privileges (such as [here](https://dev.mysql.com/doc/refman/5.5/en/grant.html)) for applicable privileges. Conflicts with \u003cspan pulumi-lang-nodejs=\"`roles`\" pulumi-lang-dotnet=\"`Roles`\" pulumi-lang-go=\"`roles`\" pulumi-lang-python=\"`roles`\" pulumi-lang-yaml=\"`roles`\" pulumi-lang-java=\"`roles`\"\u003e`roles`\u003c/span\u003e.\n","willReplaceOnChanges":true},"role":{"type":"string","description":"The role to grant \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e to. Conflicts with \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e.\n","willReplaceOnChanges":true},"roles":{"type":"array","items":{"type":"string"},"description":"A list of rols to grant to the user. Conflicts with \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e.\n","willReplaceOnChanges":true},"table":{"type":"string","description":"Which table to grant \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e on. Defaults to `*`, which is all tables.\n","willReplaceOnChanges":true},"tlsOption":{"type":"string","description":"An TLS-Option for the `GRANT` statement. The value is suffixed to `REQUIRE`. A value of 'SSL' will generate a `GRANT ... REQUIRE SSL` statement. See the [MYSQL `GRANT` documentation](https://dev.mysql.com/doc/refman/5.7/en/grant.html) for more. Ignored if MySQL version is under 5.7.0.\n","willReplaceOnChanges":true},"user":{"type":"string","description":"The name of the user. Conflicts with \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\"\u003e`role`\u003c/span\u003e.\n","willReplaceOnChanges":true}},"requiredInputs":["database"],"stateInputs":{"description":"Input properties used for looking up and filtering Grant resources.\n","properties":{"database":{"type":"string","description":"The database to grant privileges on.\n","willReplaceOnChanges":true},"grant":{"type":"boolean","description":"Whether to also give the user privileges to grant the same privileges to other users.\n","language":{"csharp":{"name":"GrantName"}},"willReplaceOnChanges":true},"host":{"type":"string","description":"The source host of the user. Defaults to \"localhost\". Conflicts with \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\"\u003e`role`\u003c/span\u003e.\n","willReplaceOnChanges":true},"privileges":{"type":"array","items":{"type":"string"},"description":"A list of privileges to grant to the user. Refer to a list of privileges (such as [here](https://dev.mysql.com/doc/refman/5.5/en/grant.html)) for applicable privileges. Conflicts with \u003cspan pulumi-lang-nodejs=\"`roles`\" pulumi-lang-dotnet=\"`Roles`\" pulumi-lang-go=\"`roles`\" pulumi-lang-python=\"`roles`\" pulumi-lang-yaml=\"`roles`\" pulumi-lang-java=\"`roles`\"\u003e`roles`\u003c/span\u003e.\n","willReplaceOnChanges":true},"role":{"type":"string","description":"The role to grant \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e to. Conflicts with \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e.\n","willReplaceOnChanges":true},"roles":{"type":"array","items":{"type":"string"},"description":"A list of rols to grant to the user. Conflicts with \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e.\n","willReplaceOnChanges":true},"table":{"type":"string","description":"Which table to grant \u003cspan pulumi-lang-nodejs=\"`privileges`\" pulumi-lang-dotnet=\"`Privileges`\" pulumi-lang-go=\"`privileges`\" pulumi-lang-python=\"`privileges`\" pulumi-lang-yaml=\"`privileges`\" pulumi-lang-java=\"`privileges`\"\u003e`privileges`\u003c/span\u003e on. Defaults to `*`, which is all tables.\n","willReplaceOnChanges":true},"tlsOption":{"type":"string","description":"An TLS-Option for the `GRANT` statement. The value is suffixed to `REQUIRE`. A value of 'SSL' will generate a `GRANT ... REQUIRE SSL` statement. See the [MYSQL `GRANT` documentation](https://dev.mysql.com/doc/refman/5.7/en/grant.html) for more. Ignored if MySQL version is under 5.7.0.\n","willReplaceOnChanges":true},"user":{"type":"string","description":"The name of the user. Conflicts with \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\"\u003e`role`\u003c/span\u003e.\n","willReplaceOnChanges":true}},"type":"object"}},"mysql:index/role:Role":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`mysql.Role`\" pulumi-lang-dotnet=\"`mysql.Role`\" pulumi-lang-go=\"`Role`\" pulumi-lang-python=\"`Role`\" pulumi-lang-yaml=\"`mysql.Role`\" pulumi-lang-java=\"`mysql.Role`\"\u003e`mysql.Role`\u003c/span\u003e` resource creates and manages a user on a MySQL\nserver.\n\n\u003e **Note:** MySQL introduced roles in version 8. They do not work on MySQL 5 and lower.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as mysql from \"@pulumi/mysql\";\n\nconst developer = new mysql.Role(\"developer\", {name: \"developer\"});\n```\n```python\nimport pulumi\nimport pulumi_mysql as mysql\n\ndeveloper = mysql.Role(\"developer\", name=\"developer\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing MySql = Pulumi.MySql;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var developer = new MySql.Role(\"developer\", new()\n    {\n        Name = \"developer\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mysql.NewRole(ctx, \"developer\", \u0026mysql.RoleArgs{\n\t\t\tName: pulumi.String(\"developer\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.mysql.Role;\nimport com.pulumi.mysql.RoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var developer = new Role(\"developer\", RoleArgs.builder()\n            .name(\"developer\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  developer:\n    type: mysql:Role\n    properties:\n      name: developer\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"name":{"type":"string","description":"The name of the role.\n"}},"required":["name"],"inputProperties":{"name":{"type":"string","description":"The name of the role.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Role resources.\n","properties":{"name":{"type":"string","description":"The name of the role.\n","willReplaceOnChanges":true}},"type":"object"}},"mysql:index/user:User":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`mysql.User`\" pulumi-lang-dotnet=\"`mysql.User`\" pulumi-lang-go=\"`User`\" pulumi-lang-python=\"`User`\" pulumi-lang-yaml=\"`mysql.User`\" pulumi-lang-java=\"`mysql.User`\"\u003e`mysql.User`\u003c/span\u003e` resource creates and manages a user on a MySQL\nserver.\n\n\u003e **Note:** The password for the user is provided in plain text, and is\nobscured by an unsalted hash in the state\n[Read more about sensitive data in state](https://www.terraform.io/docs/state/sensitive-data.html).\nCare is required when using this resource, to avoid disclosing the password.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as mysql from \"@pulumi/mysql\";\n\nconst jdoe = new mysql.User(\"jdoe\", {\n    user: \"jdoe\",\n    host: \"example.com\",\n    plaintextPassword: \"password\",\n});\n```\n```python\nimport pulumi\nimport pulumi_mysql as mysql\n\njdoe = mysql.User(\"jdoe\",\n    user=\"jdoe\",\n    host=\"example.com\",\n    plaintext_password=\"password\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing MySql = Pulumi.MySql;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var jdoe = new MySql.User(\"jdoe\", new()\n    {\n        UserName = \"jdoe\",\n        Host = \"example.com\",\n        PlaintextPassword = \"password\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mysql.NewUser(ctx, \"jdoe\", \u0026mysql.UserArgs{\n\t\t\tUser:              pulumi.String(\"jdoe\"),\n\t\t\tHost:              pulumi.String(\"example.com\"),\n\t\t\tPlaintextPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.mysql.User;\nimport com.pulumi.mysql.UserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var jdoe = new User(\"jdoe\", UserArgs.builder()\n            .user(\"jdoe\")\n            .host(\"example.com\")\n            .plaintextPassword(\"password\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  jdoe:\n    type: mysql:User\n    properties:\n      user: jdoe\n      host: example.com\n      plaintextPassword: password\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With An Authentication Plugin\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as mysql from \"@pulumi/mysql\";\n\nconst nologin = new mysql.User(\"nologin\", {\n    user: \"nologin\",\n    host: \"example.com\",\n    authPlugin: \"mysql_no_login\",\n});\n```\n```python\nimport pulumi\nimport pulumi_mysql as mysql\n\nnologin = mysql.User(\"nologin\",\n    user=\"nologin\",\n    host=\"example.com\",\n    auth_plugin=\"mysql_no_login\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing MySql = Pulumi.MySql;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nologin = new MySql.User(\"nologin\", new()\n    {\n        UserName = \"nologin\",\n        Host = \"example.com\",\n        AuthPlugin = \"mysql_no_login\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mysql.NewUser(ctx, \"nologin\", \u0026mysql.UserArgs{\n\t\t\tUser:       pulumi.String(\"nologin\"),\n\t\t\tHost:       pulumi.String(\"example.com\"),\n\t\t\tAuthPlugin: pulumi.String(\"mysql_no_login\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.mysql.User;\nimport com.pulumi.mysql.UserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var nologin = new User(\"nologin\", UserArgs.builder()\n            .user(\"nologin\")\n            .host(\"example.com\")\n            .authPlugin(\"mysql_no_login\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  nologin:\n    type: mysql:User\n    properties:\n      user: nologin\n      host: example.com\n      authPlugin: mysql_no_login\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"authPlugin":{"type":"string","description":"Use an [authentication plugin][ref-auth-plugins] to authenticate the user instead of using password authentication.  Description of the fields allowed in the block below. Conflicts with \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e.\n"},"host":{"type":"string","description":"The source host of the user. Defaults to \"localhost\".\n"},"password":{"type":"string","description":"Deprecated alias of \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e, whose value is *stored as plaintext in state*. Prefer to use \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e instead, which stores the password as an unsalted hash. Conflicts with \u003cspan pulumi-lang-nodejs=\"`authPlugin`\" pulumi-lang-dotnet=\"`AuthPlugin`\" pulumi-lang-go=\"`authPlugin`\" pulumi-lang-python=\"`auth_plugin`\" pulumi-lang-yaml=\"`authPlugin`\" pulumi-lang-java=\"`authPlugin`\"\u003e`auth_plugin`\u003c/span\u003e.\n","deprecationMessage":"Please use\u003cspan pulumi-lang-nodejs=\" plaintextPassword \" pulumi-lang-dotnet=\" PlaintextPassword \" pulumi-lang-go=\" plaintextPassword \" pulumi-lang-python=\" plaintext_password \" pulumi-lang-yaml=\" plaintextPassword \" pulumi-lang-java=\" plaintextPassword \"\u003e plaintext_password \u003c/span\u003einstead","secret":true},"plaintextPassword":{"type":"string","description":"The password for the user. This must be provided in plain text, so the data source for it must be secured. An _unsalted_ hash of the provided password is stored in state. Conflicts with \u003cspan pulumi-lang-nodejs=\"`authPlugin`\" pulumi-lang-dotnet=\"`AuthPlugin`\" pulumi-lang-go=\"`authPlugin`\" pulumi-lang-python=\"`auth_plugin`\" pulumi-lang-yaml=\"`authPlugin`\" pulumi-lang-java=\"`authPlugin`\"\u003e`auth_plugin`\u003c/span\u003e.\n","secret":true},"tlsOption":{"type":"string","description":"An TLS-Option for the `CREATE USER` or `ALTER USER` statement. The value is suffixed to `REQUIRE`. A value of 'SSL' will generate a `CREATE USER ... REQUIRE SSL` statement. See the [MYSQL `CREATE USER` documentation](https://dev.mysql.com/doc/refman/5.7/en/create-user.html) for more. Ignored if MySQL version is under 5.7.0.\n\n[ref-auth-plugins]: https://dev.mysql.com/doc/refman/5.7/en/authentication-plugins.html\n"},"user":{"type":"string","description":"The name of the user.\n","language":{"csharp":{"name":"UserName"}}}},"required":["user"],"inputProperties":{"authPlugin":{"type":"string","description":"Use an [authentication plugin][ref-auth-plugins] to authenticate the user instead of using password authentication.  Description of the fields allowed in the block below. Conflicts with \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e.\n","willReplaceOnChanges":true},"host":{"type":"string","description":"The source host of the user. Defaults to \"localhost\".\n","willReplaceOnChanges":true},"password":{"type":"string","description":"Deprecated alias of \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e, whose value is *stored as plaintext in state*. Prefer to use \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e instead, which stores the password as an unsalted hash. Conflicts with \u003cspan pulumi-lang-nodejs=\"`authPlugin`\" pulumi-lang-dotnet=\"`AuthPlugin`\" pulumi-lang-go=\"`authPlugin`\" pulumi-lang-python=\"`auth_plugin`\" pulumi-lang-yaml=\"`authPlugin`\" pulumi-lang-java=\"`authPlugin`\"\u003e`auth_plugin`\u003c/span\u003e.\n","deprecationMessage":"Please use\u003cspan pulumi-lang-nodejs=\" plaintextPassword \" pulumi-lang-dotnet=\" PlaintextPassword \" pulumi-lang-go=\" plaintextPassword \" pulumi-lang-python=\" plaintext_password \" pulumi-lang-yaml=\" plaintextPassword \" pulumi-lang-java=\" plaintextPassword \"\u003e plaintext_password \u003c/span\u003einstead","secret":true},"plaintextPassword":{"type":"string","description":"The password for the user. This must be provided in plain text, so the data source for it must be secured. An _unsalted_ hash of the provided password is stored in state. Conflicts with \u003cspan pulumi-lang-nodejs=\"`authPlugin`\" pulumi-lang-dotnet=\"`AuthPlugin`\" pulumi-lang-go=\"`authPlugin`\" pulumi-lang-python=\"`auth_plugin`\" pulumi-lang-yaml=\"`authPlugin`\" pulumi-lang-java=\"`authPlugin`\"\u003e`auth_plugin`\u003c/span\u003e.\n","secret":true},"tlsOption":{"type":"string","description":"An TLS-Option for the `CREATE USER` or `ALTER USER` statement. The value is suffixed to `REQUIRE`. A value of 'SSL' will generate a `CREATE USER ... REQUIRE SSL` statement. See the [MYSQL `CREATE USER` documentation](https://dev.mysql.com/doc/refman/5.7/en/create-user.html) for more. Ignored if MySQL version is under 5.7.0.\n\n[ref-auth-plugins]: https://dev.mysql.com/doc/refman/5.7/en/authentication-plugins.html\n","willReplaceOnChanges":true},"user":{"type":"string","description":"The name of the user.\n","language":{"csharp":{"name":"UserName"}},"willReplaceOnChanges":true}},"requiredInputs":["user"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"authPlugin":{"type":"string","description":"Use an [authentication plugin][ref-auth-plugins] to authenticate the user instead of using password authentication.  Description of the fields allowed in the block below. Conflicts with \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e.\n","willReplaceOnChanges":true},"host":{"type":"string","description":"The source host of the user. Defaults to \"localhost\".\n","willReplaceOnChanges":true},"password":{"type":"string","description":"Deprecated alias of \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e, whose value is *stored as plaintext in state*. Prefer to use \u003cspan pulumi-lang-nodejs=\"`plaintextPassword`\" pulumi-lang-dotnet=\"`PlaintextPassword`\" pulumi-lang-go=\"`plaintextPassword`\" pulumi-lang-python=\"`plaintext_password`\" pulumi-lang-yaml=\"`plaintextPassword`\" pulumi-lang-java=\"`plaintextPassword`\"\u003e`plaintext_password`\u003c/span\u003e instead, which stores the password as an unsalted hash. Conflicts with \u003cspan pulumi-lang-nodejs=\"`authPlugin`\" pulumi-lang-dotnet=\"`AuthPlugin`\" pulumi-lang-go=\"`authPlugin`\" pulumi-lang-python=\"`auth_plugin`\" pulumi-lang-yaml=\"`authPlugin`\" pulumi-lang-java=\"`authPlugin`\"\u003e`auth_plugin`\u003c/span\u003e.\n","deprecationMessage":"Please use\u003cspan pulumi-lang-nodejs=\" plaintextPassword \" pulumi-lang-dotnet=\" PlaintextPassword \" pulumi-lang-go=\" plaintextPassword \" pulumi-lang-python=\" plaintext_password \" pulumi-lang-yaml=\" plaintextPassword \" pulumi-lang-java=\" plaintextPassword \"\u003e plaintext_password \u003c/span\u003einstead","secret":true},"plaintextPassword":{"type":"string","description":"The password for the user. This must be provided in plain text, so the data source for it must be secured. An _unsalted_ hash of the provided password is stored in state. Conflicts with \u003cspan pulumi-lang-nodejs=\"`authPlugin`\" pulumi-lang-dotnet=\"`AuthPlugin`\" pulumi-lang-go=\"`authPlugin`\" pulumi-lang-python=\"`auth_plugin`\" pulumi-lang-yaml=\"`authPlugin`\" pulumi-lang-java=\"`authPlugin`\"\u003e`auth_plugin`\u003c/span\u003e.\n","secret":true},"tlsOption":{"type":"string","description":"An TLS-Option for the `CREATE USER` or `ALTER USER` statement. The value is suffixed to `REQUIRE`. A value of 'SSL' will generate a `CREATE USER ... REQUIRE SSL` statement. See the [MYSQL `CREATE USER` documentation](https://dev.mysql.com/doc/refman/5.7/en/create-user.html) for more. Ignored if MySQL version is under 5.7.0.\n\n[ref-auth-plugins]: https://dev.mysql.com/doc/refman/5.7/en/authentication-plugins.html\n","willReplaceOnChanges":true},"user":{"type":"string","description":"The name of the user.\n","language":{"csharp":{"name":"UserName"}},"willReplaceOnChanges":true}},"type":"object"}},"mysql:index/userPassword:UserPassword":{"description":"The \u003cspan pulumi-lang-nodejs=\"`mysql.UserPassword`\" pulumi-lang-dotnet=\"`mysql.UserPassword`\" pulumi-lang-go=\"`UserPassword`\" pulumi-lang-python=\"`UserPassword`\" pulumi-lang-yaml=\"`mysql.UserPassword`\" pulumi-lang-java=\"`mysql.UserPassword`\"\u003e`mysql.UserPassword`\u003c/span\u003e resource sets and manages a password for a given \nuser on a MySQL server.\n\n\u003e **NOTE on MySQL Passwords:** This resource conflicts with the \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e \n   argument for \u003cspan pulumi-lang-nodejs=\"`mysql.User`\" pulumi-lang-dotnet=\"`mysql.User`\" pulumi-lang-go=\"`User`\" pulumi-lang-python=\"`User`\" pulumi-lang-yaml=\"`mysql.User`\" pulumi-lang-java=\"`mysql.User`\"\u003e`mysql.User`\u003c/span\u003e. This resource uses PGP encryption to avoid \n   storing unencrypted passwords in Terraform state.\n   \n\u003e **NOTE on How Passwords are Created:** This resource **automatically**\n   generates a **random** password. The password will be a random UUID.\n\n## Example Usage\n\n \u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as mysql from \"@pulumi/mysql\";\n\nconst jdoe = new mysql.User(\"jdoe\", {user: \"jdoe\"});\nconst jdoeUserPassword = new mysql.UserPassword(\"jdoe\", {\n    user: jdoe.user,\n    pgpKey: \"keybase:joestump\",\n});\n```\n```python\nimport pulumi\nimport pulumi_mysql as mysql\n\njdoe = mysql.User(\"jdoe\", user=\"jdoe\")\njdoe_user_password = mysql.UserPassword(\"jdoe\",\n    user=jdoe.user,\n    pgp_key=\"keybase:joestump\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing MySql = Pulumi.MySql;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var jdoe = new MySql.User(\"jdoe\", new()\n    {\n        UserName = \"jdoe\",\n    });\n\n    var jdoeUserPassword = new MySql.UserPassword(\"jdoe\", new()\n    {\n        User = jdoe.UserName,\n        PgpKey = \"keybase:joestump\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-mysql/sdk/v3/go/mysql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tjdoe, err := mysql.NewUser(ctx, \"jdoe\", \u0026mysql.UserArgs{\n\t\t\tUser: pulumi.String(\"jdoe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mysql.NewUserPassword(ctx, \"jdoe\", \u0026mysql.UserPasswordArgs{\n\t\t\tUser:   jdoe.User,\n\t\t\tPgpKey: pulumi.String(\"keybase:joestump\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.mysql.User;\nimport com.pulumi.mysql.UserArgs;\nimport com.pulumi.mysql.UserPassword;\nimport com.pulumi.mysql.UserPasswordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var jdoe = new User(\"jdoe\", UserArgs.builder()\n            .user(\"jdoe\")\n            .build());\n\n        var jdoeUserPassword = new UserPassword(\"jdoeUserPassword\", UserPasswordArgs.builder()\n            .user(jdoe.user())\n            .pgpKey(\"keybase:joestump\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  jdoe:\n    type: mysql:User\n    properties:\n      user: jdoe\n  jdoeUserPassword:\n    type: mysql:UserPassword\n    name: jdoe\n    properties:\n      user: ${jdoe.user}\n      pgpKey: keybase:joestump\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can rotate passwords by running `terraform taint mysql_user_password.jdoe`. \nThe next time Terraform applies a new password will be generated and the user's\npassword will be updated accordingly.\n","properties":{"encryptedPassword":{"type":"string","description":"The encrypted password, base64 encoded.\n"},"host":{"type":"string","description":"The source host of the user. Defaults to \u003cspan pulumi-lang-nodejs=\"`localhost`\" pulumi-lang-dotnet=\"`Localhost`\" pulumi-lang-go=\"`localhost`\" pulumi-lang-python=\"`localhost`\" pulumi-lang-yaml=\"`localhost`\" pulumi-lang-java=\"`localhost`\"\u003e`localhost`\u003c/span\u003e.\n"},"keyFingerprint":{"type":"string","description":"The fingerprint of the PGP key used to encrypt the password\n"},"pgpKey":{"type":"string","description":"Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`.\n"},"user":{"type":"string","description":"The IAM user to associate with this access key.\n"}},"required":["encryptedPassword","keyFingerprint","pgpKey","user"],"inputProperties":{"host":{"type":"string","description":"The source host of the user. Defaults to \u003cspan pulumi-lang-nodejs=\"`localhost`\" pulumi-lang-dotnet=\"`Localhost`\" pulumi-lang-go=\"`localhost`\" pulumi-lang-python=\"`localhost`\" pulumi-lang-yaml=\"`localhost`\" pulumi-lang-java=\"`localhost`\"\u003e`localhost`\u003c/span\u003e.\n","willReplaceOnChanges":true},"pgpKey":{"type":"string","description":"Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`.\n","willReplaceOnChanges":true},"user":{"type":"string","description":"The IAM user to associate with this access key.\n","willReplaceOnChanges":true}},"requiredInputs":["pgpKey","user"],"stateInputs":{"description":"Input properties used for looking up and filtering UserPassword resources.\n","properties":{"encryptedPassword":{"type":"string","description":"The encrypted password, base64 encoded.\n"},"host":{"type":"string","description":"The source host of the user. Defaults to \u003cspan pulumi-lang-nodejs=\"`localhost`\" pulumi-lang-dotnet=\"`Localhost`\" pulumi-lang-go=\"`localhost`\" pulumi-lang-python=\"`localhost`\" pulumi-lang-yaml=\"`localhost`\" pulumi-lang-java=\"`localhost`\"\u003e`localhost`\u003c/span\u003e.\n","willReplaceOnChanges":true},"keyFingerprint":{"type":"string","description":"The fingerprint of the PGP key used to encrypt the password\n"},"pgpKey":{"type":"string","description":"Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`.\n","willReplaceOnChanges":true},"user":{"type":"string","description":"The IAM user to associate with this access key.\n","willReplaceOnChanges":true}},"type":"object"}}},"functions":{"pulumi:providers:mysql/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"type":"ref","$ref":"#/provider"}},"type":"pulumi:providers:mysql/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}}}