From charlesreid1

No edit summary
 
(12 intermediate revisions by the same user not shown)
Line 12: Line 12:


==Create MySQL Compute Instance==
==Create MySQL Compute Instance==
===Manually Allocate Instance and Install MySQL===


Start by setting up project:
Start by setting up project:
Line 22: Line 24:


<pre>
<pre>
$ gcloud config set compute//zone the-zone
$ gcloud config set compute --zone us-west1
</pre>
</pre>


Line 47: Line 49:


When you run the installation process, you will be prompted to set a root password.
When you run the installation process, you will be prompted to set a root password.
(I suppose you could also use a [[Docker]] or [[Kubernetes]] image and run that in the cloud - but not sure exactly how that process would mesh with Google Cloud.)


Secure the installation using the MySQL command <code>mysql_secure_installation</code>:
Secure the installation using the MySQL command <code>mysql_secure_installation</code>:
Line 70: Line 70:
</pre>
</pre>


===Use Container===
The other option here, which I suppose would bypass all of the Cloud SQL stuff, is to just use a Docker container and set up the SQL server yourself. This would use the Container Engine product instead.
Link to info about container engine: https://cloud.google.com/container-engine/
Link to container engine documentation: https://cloud.google.com/container-engine/docs/


==Connect to MySQL Compute Instance==
==Connect to MySQL Compute Instance==
Line 75: Line 82:
Once you've created the MySQL compute instance, you have a MySQL server running, and you can connect to the server using MySQL clients.
Once you've created the MySQL compute instance, you have a MySQL server running, and you can connect to the server using MySQL clients.


Using the web console, you can get a shell on the cloud instance using the little cloud shell icon. Alternatively, connect to a MySQL server from a MySQL client...
There are multiple ways to do this:
* Log into Google Cloud console, find the compute engine instance, and get a shell on the machine via the browser
* Connect to the MySQL server instance (in the cloud) from a MySQL client instance (on your local machine) by setting the proper connection parameters
 
How to connect to a remote MySQL server: [[MySQL#Get_a_remote_MySQL_shell]] (basically, just specify --host and --port arguments)
 
Now, can perform actions like creating a database, inserting sample data, etc.
 
<pre>
mysql> CREATE DATABASE guestbook;
 
mysql> USE guestbook;
 
mysql> CREATE TABLE entries (guestName VARCHAR(255), content VARCHAR(255),
    entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID));
    INSERT INTO entries (guestName, content) values ("first guest", "First!");
    INSERT INTO entries (guestName, content) values ("second guest", "What a jerk.");
 
mysql> SELECT * FROM entries;
</pre>
 
Basic operations like configuring users [https://cloud.google.com/sql/docs/mysql/create-manage-users] and creating databases [https://cloud.google.com/sql/docs/mysql/create-manage-databases] can be done using the standard MySQL client.
 
===Connecting to MySQL Compute Instance from External Application===
 
Can also connect to MySQL compute instance from an external application like JDBC (Java), Go, Docker, or a secure SSL proxy.
 
To connect via a secure SSL proxy, the client machine and server machine must both be running Cloud Proxy: https://cloud.google.com/sql/docs/mysql/sql-proxy
 
(NOTE: Not trivial to carry out successfully!)
 
===Configuring Default User===


Link to Cloud SQL for MySQL that mentions this: https://cloud.google.com/sql/docs/mysql/quickstart
Configure the default user account. By default, the default user is root.


==Delete MySQL Compute Instance==
==Delete MySQL Compute Instance==
Line 84: Line 122:


<pre>
<pre>
$ gcloud compute instances delete dummy --zone the-zone
$ gcloud compute instances delete dummy --zone us-west1
</pre>
</pre>


Line 91: Line 129:


[[Category:Google Cloud]]
[[Category:Google Cloud]]
[[Category:SQL]]
[[Category:MySQL]]
[[Category:Databases]]

Latest revision as of 07:37, 24 October 2017

To set up MySQL on Google Cloud, create a new project using the Google Cloud Platform Console.

Link to google cloud platform console: https://console.cloud.google.com/project

Setting up Google Cloud SDK

This uses the gcloud command line tool (see Google Cloud/Gcloud). This tool uses the Compute Engine API, so you have to enable that first. Also, need to install Google Cloud SDK (which installs the gcloud tool). There are also client libraries that allow you to write scripts in various languages.

Link to enabling compute engine API: https://console.cloud.google.com/flows/enableapi?apiid=compute_component

Link to google cloud sdk: https://cloud.google.com/sdk/docs/

Create MySQL Compute Instance

Manually Allocate Instance and Install MySQL

Start by setting up project:

$ gcloud config set project project-name

Set up compute zone:

$ gcloud config set compute --zone us-west1

Now to set up a MySQL server, create a compute instance. This sets up a plain, empty Debian VM that you can SSH to and install MySQL onto. Other operating systems are available too.

Create the instance:

$ gcloud instances create dummy

SSH to the instance:

$ gcloud compute ssh dummy

Install MySQL on the compute instance:

$ sudo apt-get update
$ sudo apt-get -y install mysql-server

When you run the installation process, you will be prompted to set a root password.

Secure the installation using the MySQL command mysql_secure_installation:

$ sudo mysql_secure_installation

Connect to the server:

$ mysql --user=root --password

To do a "hello world" with MySQL, run the commands:

mysql> show processlist;

mysql> SELECT User, Host, Password FROM mysql.user;

Use Container

The other option here, which I suppose would bypass all of the Cloud SQL stuff, is to just use a Docker container and set up the SQL server yourself. This would use the Container Engine product instead.

Link to info about container engine: https://cloud.google.com/container-engine/

Link to container engine documentation: https://cloud.google.com/container-engine/docs/

Connect to MySQL Compute Instance

Once you've created the MySQL compute instance, you have a MySQL server running, and you can connect to the server using MySQL clients.

There are multiple ways to do this:

  • Log into Google Cloud console, find the compute engine instance, and get a shell on the machine via the browser
  • Connect to the MySQL server instance (in the cloud) from a MySQL client instance (on your local machine) by setting the proper connection parameters

How to connect to a remote MySQL server: MySQL#Get_a_remote_MySQL_shell (basically, just specify --host and --port arguments)

Now, can perform actions like creating a database, inserting sample data, etc.

mysql> CREATE DATABASE guestbook;

mysql> USE guestbook;

mysql> CREATE TABLE entries (guestName VARCHAR(255), content VARCHAR(255), 
    entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID));
    INSERT INTO entries (guestName, content) values ("first guest", "First!");
    INSERT INTO entries (guestName, content) values ("second guest", "What a jerk.");

mysql> SELECT * FROM entries;

Basic operations like configuring users [1] and creating databases [2] can be done using the standard MySQL client.

Connecting to MySQL Compute Instance from External Application

Can also connect to MySQL compute instance from an external application like JDBC (Java), Go, Docker, or a secure SSL proxy.

To connect via a secure SSL proxy, the client machine and server machine must both be running Cloud Proxy: https://cloud.google.com/sql/docs/mysql/sql-proxy

(NOTE: Not trivial to carry out successfully!)

Configuring Default User

Configure the default user account. By default, the default user is root.

Delete MySQL Compute Instance

Once you're finished with the MySQL server you'll want to delete the VM that was allocated. I am unable to find a way to do this using the gcloud interface.

$ gcloud compute instances delete dummy --zone us-west1

Link to gcloud documentation that mentions this command: https://cloud.google.com/compute/docs/gcloud-compute/