Community journal

The latest from the MySQL community

Ideas, releases, practical guides, and perspectives from the people building with MySQL.

Follow the feed
Showing entries 2116 to 2125 of 45496 « Previous | Next »
How to prevent unauthorized users from connecting to ProxySQL

ProxySQL is a great load balancer which however suffers from some shortcomings concerning the management of MySQL users. ProxySQL provides a firewall which, in my case, is not complete enough to properly manage users and secure their access. Indeed, this firewall does not accept subnets and keeps unauthorized connections in ProxySQL. We cannot then be sure of not suffering a DDOS attack on our ProxySQL instance. In this article, I will explain how I managed to overcome this problem.

Reminder of the principle of connection through ProxySQL

To understand what follows, you have to bear in mind how ProxySQL connects to MySQL. The user connects to Proxysql which then establishes the connection to MySQL. For this, ProxySQL maintains MySQL users in its internal database. The names of MySQL users, their passwords as well as the MySQL destination server are entered in the mysql_users table. At each connection request to a MySQL server, …

[Read more]
Viewing MySQL Document Store Queries in MySQL Database Services

In a previous post, we talked about how you can view the underlying queries that are run when we make calls to the MySQL Document Store API. While this solution works well on a local or other on-premise instance of MySQL, it is not a viable option for viewing those same queries on a MySQL Database Service (MDS) instance running […]

Fixing Misplaced Rows in a Partitioned Table

A partitioned table in MySQL has its data separated into different tablespaces while still being viewed as a single table. Partitioning can be a useful approach in some cases when handling huge sets of data. Deleting huge data sets could be quickened up in a partitioned table, but if not handled properly, it can misplace your data in the table. In this blog, I will share how to check and fix the data in such a table with minimal disruption to the table.

In this example, we use a table partitioned based on a date range.

mysql> show create table salariesG
*************************** 1. row ***************************
       Table: salaries
Create Table: CREATE TABLE `salaries` (
  `emp_no` int(11) NOT NULL,
  `salary` int(11) NOT NULL,
  `from_date` date NOT NULL,
  `to_date` date NOT NULL,
  PRIMARY KEY (`emp_no`,`from_date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE  COLUMNS(from_date)
(PARTITION p01 VALUES LESS …
[Read more]
How to read MySQL EXPLAINs

In the MySQL world, EXPLAIN is a keyword used to gain information about query execution. This blog post will demonstrate how to utilize MySQL EXPLAIN to remedy problematic queries.

On the Technical Solutions team here at PlanetScale, we frequently talk with users who seek advice regarding query performance. Although creating an EXPLAIN plan is relatively simple, the output isn’t exactly intuitive. It’s essential to understand its features and how to leverage it best to achieve performance goals.

EXPLAIN vs. EXPLAIN ANALYZE

When you prepend the EXPLAIN keyword to the beginning of a query, it explains how the database executes that query and the estimated costs. By leveraging this internal MySQL tool, you can observe the following: …

[Read more]
How to read MySQL EXPLAINs

Learn how to read the output in MySQL EXPLAIN plans so you can utilize them to improve query performance.

MySQL Database Service – find the info: part 4 – connections

As a MySQL DBA, you like to know who is connected on the system you manage. You also like to know who is trying to connect.

In this article, we will discover how we can retrieve the information and control who is using the MySQL DB instance we launched in OCI.

Secure Connections

The first thing we can check is that all our clients encrypt their connection to the MySQL server.

We use again Performance_Schema to retrieve the relevant information:

select connection_type, substring_index(substring_index(name,"/",2),"/",-1) name,
       sbt.variable_value AS tls_version, t2.variable_value AS cipher,
       processlist_user AS user, processlist_host AS host
from performance_schema.status_by_thread AS sbt
join performance_schema.threads AS t 
  on t.thread_id = sbt.thread_id
join performance_schema.status_by_thread AS t2 
  on t2.thread_id = t.thread_id
where sbt.variable_name = 'Ssl_version' and …
[Read more]
MySQL Database Service – find the info: part 4 – connections

New series of articles about how to find useful informarion when using MySQL Database Service.

Upgrade Your MySQL Database: Don’t Get Left Behind

The End-of-Life (EOL) date for MySQL 5.7 is scheduled for October 2023, which means that after that date, MySQL 5.7 will no longer receive updates, bug fixes, or security patches. This does not mean that MySQL 5.7 will stop working after the EOL date, but it does mean that any issues or vulnerabilities discovered after that date will not be addressed, This can leave your database at risk of security breaches or performance issues. AWS RDS support for MySQL will also hold good only till October 2023.

To avoid these potential issues, it is recommended to upgrade to a newer version of MySQL before the EOL date for MySQL 5.7. Upgrading to a newer version such as MySQL 8 …

[Read more]
Announcing Blip: A New MySQL Monitor

Blip is a new MySQL monitor that collects and reports server metrics. But wasn’t this problem solved long ago? Not really…

Announcing Blip: A New MySQL Monitor

Blip is a new MySQL monitor that collects and reports server metrics. But wasn’t this problem solved long ago? Not really…