Create MySQL Test Instance with Oracle Cloud Free Tier
Oracle announced this week at Oracle OpenWorld that it has introduced a new cloud offer called Oracle Cloud Free Tier. As the name suggest, it allows you to run a few limited instances in Oracle Cloud for free. I will in this blog show how you can use the free tier to setup a MySQL test instance.
The first step is to sign up for the cloud service which you do by opening https://www.oracle.com/cloud/free/ and click on the Start for free button near the top of the page:
This will take you through a series of pages where you create your Oracle Cloud account. The steps are straight forward. You will need to provide a valid mobile number and credit card (but no fees are charges provided you stick to the always free services). At the end you are directed to the Oracle Cloud login page:
Enter the email address and password from the registration process, and you are ready to use create Oracle Cloud services. You will need a compute instance which you create by choosing the Compute Create a VM Instance quick action:
Notice how there is a label Always Free Eligible which tells you can create instances in the free tier.
On the next screen, you can fill in the details for the instance. You can choose all the default values which will create a VM.Standard.E2.1.Micro virtual machine which is one of the shapes that are included in the free tier. The shape includes 1 OCPU (1 CPU with hyperthreading, so two virtual CPUs) and 1GiB of memory. It will also set everything up for you including the network with ssh access.
To be able to ssh to the instance, you need to add the public ssh key for your ssh key pair. If you do not already have an ssh key, then https://docs.oracle.com/en/cloud/paas/event-hub-cloud/admin-guide/generate-ssh-key-pair-using-puttygen.html has an example of creating one on Microsoft Windows.
Once you click create, a workflow is created and launched. While the workflow is running, the icon in the top left corner is yellow/orange to indicate that the instance is being worked on. Once the workflow has completed, the instance is available and the icon turns green.
You will need the Public IP Address which you can find in the Primary VNIC Information section when viewing the instance details:
With that and your ssh key, you can connect to the instance using the opc
user, for example (this assumes you have the private key in OpenSSH format):
shell$ ssh -i ~/.ssh/id_rsa opc@<ip address of vm>
The first step to install MySQL is to install the MySQL yum repository:
[opc@mysql ~]$ sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpmLoaded plugins: langpacks, ulninfo
mysql80-community-release-el7-3.noarch.rpm | 25 kB 00:00:00
Examining /var/tmp/yum-root-4Yk8Ev/mysql80-community-release-el7-3.noarch.rpm: mysql80-community-release-el7-3.noarch
Marking /var/tmp/yum-root-4Yk8Ev/mysql80-community-release-el7-3.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package mysql80-community-release.noarch 0:el7-3 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=====================================================================================================
Package Arch Version Repository Size
=====================================================================================================
Installing:
mysql80-community-release noarch el7-3 /mysql80-community-release-el7-3.noarch 31 k
Transaction Summary
=====================================================================================================
Install 1 Package
Total size: 31 k
Installed size: 31 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mysql80-community-release-el7-3.noarch 1/1
Verifying : mysql80-community-release-el7-3.noarch 1/1
Installed:
mysql80-community-release.noarch 0:el7-3
Complete!
Now you can install any of the MySQL products using the yum command. For example, to install MySQL Server, the MySQL client programs, and MySQL Shell:
[opc@mysql ~]$ sudo yum install mysql-community-server mysql-community-client mysql-shell
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package mysql-community-client.x86_64 0:8.0.17-1.el7 will be installed
--> Processing Dependency: mysql-community-libs(x86-64) >= 8.0.11 for package: mysql-community-client-8.0.17-1.el7.x86_64
---> Package mysql-community-server.x86_64 0:8.0.17-1.el7 will be installed
--> Processing Dependency: mysql-community-common(x86-64) = 8.0.17-1.el7 for package: mysql-community-server-8.0.17-1.el7.x86_64
---> Package mysql-shell.x86_64 0:8.0.17-1.el7 will be installed
--> Running transaction check
---> Package mariadb-libs.x86_64 1:5.5.64-1.el7 will be obsoleted
--> Processing Dependency: libmysqlclient.so.18()(64bit) for package: 2:postfix-2.10.1-7.el7.x86_64
--> Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: 2:postfix-2.10.1-7.el7.x86_64
---> Package mysql-community-common.x86_64 0:8.0.17-1.el7 will be installed
---> Package mysql-community-libs.x86_64 0:8.0.17-1.el7 will be obsoleting
--> Running transaction check
---> Package mysql-community-libs-compat.x86_64 0:8.0.17-1.el7 will be obsoleting
--> Finished Dependency Resolution
Dependencies Resolved
=====================================================================================================
Package Arch Version Repository Size
=====================================================================================================
Installing:
mysql-community-client x86_64 8.0.17-1.el7 mysql80-community 32 M
mysql-community-libs x86_64 8.0.17-1.el7 mysql80-community 3.0 M
replacing mariadb-libs.x86_64 1:5.5.64-1.el7
mysql-community-libs-compat x86_64 8.0.17-1.el7 mysql80-community 2.1 M
replacing mariadb-libs.x86_64 1:5.5.64-1.el7
mysql-community-server x86_64 8.0.17-1.el7 mysql80-community 415 M
mysql-shell x86_64 8.0.17-1.el7 mysql-tools-community 15 M
Installing for dependencies:
mysql-community-common x86_64 8.0.17-1.el7 mysql80-community 589 k
Transaction Summary
=====================================================================================================
Install 5 Packages (+1 Dependent package)
Total download size: 468 M
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/7Server/mysql80-community/packages/mysql-community-common-8.0.17-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Public key for mysql-community-common-8.0.17-1.el7.x86_64.rpm is not installed
(1/6): mysql-community-common-8.0.17-1.el7.x86_64.rpm | 589 kB 00:00:00
(2/6): mysql-community-libs-8.0.17-1.el7.x86_64.rpm | 3.0 MB 00:00:01
(3/6): mysql-community-libs-compat-8.0.17-1.el7.x86_64.rpm | 2.1 MB 00:00:00
Public key for mysql-shell-8.0.17-1.el7.x86_64.rpm is not installed] 5.0 MB/s | 44 MB 00:01:25 ETA
(4/6): mysql-shell-8.0.17-1.el7.x86_64.rpm | 15 MB 00:00:06
(5/6): mysql-community-client-8.0.17-1.el7.x86_64.rpm | 32 MB 00:00:13
(6/6): mysql-community-server-8.0.17-1.el7.x86_64.rpm | 415 MB 00:01:29
-----------------------------------------------------------------------------------------------------
Total 5.1 MB/s | 468 MB 00:01:31
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Importing GPG key 0x5072E1F5:
Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>"
Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5
Package : mysql80-community-release-el7-3.noarch (@/mysql80-community-release-el7-3.noarch)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mysql-community-common-8.0.17-1.el7.x86_64 1/7
Installing : mysql-community-libs-8.0.17-1.el7.x86_64 2/7
Installing : mysql-community-client-8.0.17-1.el7.x86_64 3/7
Installing : mysql-community-server-8.0.17-1.el7.x86_64 4/7
Installing : mysql-community-libs-compat-8.0.17-1.el7.x86_64 5/7
Installing : mysql-shell-8.0.17-1.el7.x86_64 6/7
Erasing : 1:mariadb-libs-5.5.64-1.el7.x86_64 7/7
Verifying : mysql-community-libs-8.0.17-1.el7.x86_64 1/7
Verifying : mysql-community-server-8.0.17-1.el7.x86_64 2/7
Verifying : mysql-community-common-8.0.17-1.el7.x86_64 3/7
Verifying : mysql-community-client-8.0.17-1.el7.x86_64 4/7
Verifying : mysql-shell-8.0.17-1.el7.x86_64 5/7
Verifying : mysql-community-libs-compat-8.0.17-1.el7.x86_64 6/7
Verifying : 1:mariadb-libs-5.5.64-1.el7.x86_64 7/7
Installed:
mysql-community-client.x86_64 0:8.0.17-1.el7 mysql-community-libs.x86_64 0:8.0.17-1.el7
mysql-community-libs-compat.x86_64 0:8.0.17-1.el7 mysql-community-server.x86_64 0:8.0.17-1.el7
mysql-shell.x86_64 0:8.0.17-1.el7
Dependency Installed:
mysql-community-common.x86_64 0:8.0.17-1.el7
Replaced:
mariadb-libs.x86_64 1:5.5.64-1.el7
Complete!
There are some dependencies that are pulled in and existing libraries are upgraded.
That is it. All that remains is to start MySQL and set the root password. You start MySQL through systemd like:
[opc@mysql ~]$ sudo systemctl start mysqld
Since it is the first time MySQL is started, the data directory (/var/lib/mysql
) is initialized and the root account is created with a random password. You can find the random password in the error log:
[opc@mysql ~]$ sudo grep password /var/log/mysqld.log
2019-09-18T09:59:55.552745Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: i(Y5Nkko>S.t
The password you see will of course be different. Use the password the first time you authenticate, then use the ALTER USER
statement to set the new password. For example, using MySQL Shell:
[opc@mysql ~]$ mysqlsh --user=root --sql
Please provide the password for 'root@localhost': ************
Save password for 'root@localhost'? [Y]es/[N]o/Ne[v]er (default No): No
MySQL Shell 8.0.17
Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Type '\help' or '\?' for help; '\quit' to exit.
Creating a session to 'root@localhost'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 10 (X protocol)
Server version: 8.0.17 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
MySQL localhost:33060+ ssl SQL > ALTER USER CURRENT_USER() IDENTIFIED BY 'New$secureP@ssw0rd';
Query OK, 0 rows affected (0.0061 sec)
You are now ready to use MySQL. Have fun.
Hi Jesper ,
Thanks for an article. I would like to know if I can build the cluster for TEST purpose using Oracle Cloud Free Tier.
If not can you please guide/help me , where I will be able to create the cluster for TEST purpose.
Thanks,
Since the free tier only allows two small compute instances, I do not really see it as targeted to testing any kind of cluster technology.
If you want to try to set up MySQL InnoDB Cluster in Oracle Cloud, then Lefred has a Terraform template, you can use as a starting point: https://lefred.be/content/deploy-mysql-innodb-cluster-in-oci-with-terraform/ .