Discover how a bimodal integration strategy can address the major data management challenges facing your organization today.
Get the Report →Query IBM Cloud Object Storage Data as a MySQL Database in Node.js
Execute MySQL queries against IBM Cloud Object Storage data from Node.js.
You can use the SQL Gateway from the ODBC Driver for IBM Cloud Object Storage to query IBM Cloud Object Storage data through a MySQL interface. Follow the procedure below to start the MySQL remoting service of the SQL Gateway and start querying using Node.js.
Connect to IBM Cloud Object Storage Data
If you have not already done so, provide values for the required connection properties in the data source name (DSN). You can use the built-in Microsoft ODBC Data Source Administrator to configure the DSN. This is also the last step of the driver installation. See the "Getting Started" chapter in the help documentation for a guide to using the Microsoft ODBC Data Source Administrator to create and configure a DSN.
Register a New Instance of Cloud Object Storage
If you do not already have Cloud Object Storage in your IBM Cloud account, follow the procedure below to install an instance of SQL Query in your account:
- Log in to your IBM Cloud account.
- Navigate to the page, choose a name for your instance and click Create. You will be redirected to the instance of Cloud Object Storage you just created.
Connecting using OAuth Authentication
There are certain connection properties you need to set before you can connect. You can obtain these as follows:
API Key
To connect with IBM Cloud Object Storage, you need an API Key. You can obtain this as follows:
- Log in to your IBM Cloud account.
- Navigate to the Platform API Keys page.
- On the middle-right corner click "Create an IBM Cloud API Key" to create a new API Key.
- In the pop-up window, specify the API Key name and click "Create". Note the API Key as you can never access it again from the dashboard.
Cloud Object Storage CRN
If you have multiple accounts, you will need to specify the CloudObjectStorageCRN explicitly. To find the appropriate value, you can:
- Query the Services view. This will list your IBM Cloud Object Storage instances along with the CRN for each.
- Locate the CRN directly in IBM Cloud. To do so, navigate to your IBM Cloud Dashboard. In the Resource List, Under Storage, select your Cloud Object Storage resource to get its CRN.
Connecting to Data
You can now set the following to connect to data:
- InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to avoid repeating the OAuth exchange and manually setting the OAuthAccessToken.
- ApiKey: Set this to your API key which was noted during setup.
- CloudObjectStorageCRN (Optional): Set this to the cloud object storage CRN you want to work with. While the connector attempts to retrieve this automatically, specifying this explicitly is recommended if you have more than Cloud Object Storage account.
When you connect, the connector completes the OAuth process.
- Extracts the access token and authenticates requests.
- Saves OAuth values in OAuthSettingsLocation to be persisted across connections.
Configure the SQL Gateway
See the SQL Gateway Overview to set up connectivity to IBM Cloud Object Storage data as a virtual MySQL database. You will configure a MySQL remoting service that listens for MySQL requests from clients. The service can be configured in the SQL Gateway UI.
Query IBM Cloud Object Storage from Node.js
The following example shows how to define a connection and execute queries to IBM Cloud Object Storage with the mysql module. You will need the following information:
- Host name or address, and port: The machine and port where the MySQL remoting service is listening for MySQL connections.
- Username and password: The username and password of a user you authorized on the Users tab of the SQL Gateway.
- Database name: The DSN you configured for the MySQL remoting service.
Connect to IBM Cloud Object Storage data and start executing queries with the code below:
var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', database : 'CData IBMCloudObjectStorage Sys', port : '3306', user : 'mysql_user', password : 'test' }); connection.connect(); connection.query('SELECT * FROM Objects', function(err, rows, fields) { if (err) throw err; console.log(rows); }); connection.end();