MySQL连接使用SSL是一种安全的方式,可以保护数据库服务器和客户端之间的通信。SSL(Secure Sockets Layer)是一种安全协议,可以在两个应用程序之间建立一个加密的连接。SSL可以防止数据在传输过程中被窃取或者篡改。
MySQL连接使用SSL的步骤如下:
1. 在MySQL服务器上生成证书文件。 2. 将证书文件复制到客户端机器上。 3. 在MySQL服务器上启用SSL。 4. 在客户端机器上启用SSL。 5. 配置MySQL客户端来使用SSL连接到MySQL服务器。
要启用MySQL连接使用SSL,首先必须在MySQL服务器上生成证书文件,然后将证书文件复制到客户端机器上。然后在MySQL服务器上启用SSL,并在客户端机器上启用SSL,然后配置MySQL客户端来使用SSL连接到MySQL服务器。
要生成证书文件,只需要执行如下命令即可:
mysql_ssl_rsa_setup --uid=mysql
此命令将生成三个文件:ca-key.pem、ca-cert.pem、server-cert.pem。将这三个文件拷贝到客户端机
在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。
本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。
你可以在SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。
JOIN 按照功能大致分为如下三类:
本章节使用的数据库结构及数据下载:W3CSCHOOL.sql。
我们在W3CSCHOOL数据库中有两张表 tcount_tbl 和 _tbl。两张数据表数据如下:
尝试以下实例:
root@host# mysql -u root -p password; Enter password:******* mysql> use W3CSCHOOL; Database changed mysql> SELECT * FROM tcount_tbl; +-----------------+----------------+ | _author | _count | +-----------------+----------------+ | mahran | 20 | | mahnaz | NULL | | Jen | NULL | | Gill | 20 | | John Poul | 1 | | Sanjay | 1 | +-----------------+----------------+ 6 rows in set (0.01 sec) mysql> SELECT * from _tbl; +-------------+----------------+-----------------+-----------------+ | _id | _title | _author | submission_date | +-------------+----------------+-----------------+-----------------+ | 1 | Learn PHP | John Poul | 2007-05-24 | | 2 | Learn MySQL | Abdul S | 2007-05-24 | | 3 | JAVA Tutorial | Sanjay | 2007-05-06 | +-------------+----------------+-----------------+-----------------+ 3 rows in set (0.00 sec) mysql>
接下来我们就使用MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)来连接以上两张表来读取_tbl表中所有_author字段在tcount_tbl表对应的_count字段值:
mysql> SELECT a._id, a._author, b._count FROM _tbl a INNER JOIN tcount_tbl b ON a._author = b._author; +-----------+---------------+--------------+ | _id | _author | _count | +-----------+---------------+--------------+ | 1 | John Poul | 1 | | 3 | Sanjay | 1 | +-----------+---------------+--------------+ 2 rows in set (0.00 sec)
以上 SQL 语句等价于:
mysql> SELECT a._id, a._author, b._count FROM _tbl a, tcount_tbl b WHERE a._author = b._author; +-------------+-----------------+----------------+ | _id | _author | _count | +-------------+-----------------+----------------+ | 1 | John Poul | 1 | | 3 | Sanjay | 1 | +-------------+-----------------+----------------+ 2 rows in set (0.01 sec) mysql>
MySQL left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。
尝试以下实例,以 _tbl 为左表,tcount_tbl 为右表,理解MySQL LEFT JOIN的应用:
root@host# mysql -u root -p password; Enter password:******* mysql> use W3CSCHOOL; Database changed mysql> SELECT a._id, a._author, b._count FROM _tbl a LEFT JOIN tcount_tbl b ON a._author = b._author; +-------------+-----------------+----------------+ | _id | _author | _count | +-------------+-----------------+----------------+ | 1 | John Poul | 1 | | 2 | Abdul S | NULL | | 3 | Sanjay | 1 | +-------------+-----------------+----------------+ 3 rows in set (0.02 sec)
以上实例中使用了LEFT JOIN,该语句会读取左边的数据表_tbl的所有选取的字段数据,即便在右侧表tcount_tbl中没有对应的_author字段值。
MySQL RIGHT JOIN 会读取右边数据表的全部数据,即便左边边表无对应数据。
尝试以下实例,以 tcount_tbl 为左表,_tbl 为右表,理解MySQL RIGHT JOIN的应用:
root@host# mysql -u root -p password; Enter password:******* mysql> use W3CSCHOOL; Database changed mysql> SELECT b._id, b._author, a._count FROM tcount_tbl a RIGHT JOIN _tbl b ON a._author = b._author; +-------------+-----------------+----------------+ | _id | _author | _count | +-------------+-----------------+----------------+ | 1 | John Poul | 1 | | 2 | Abdul S | NULL | | 3 | Sanjay | 1 | +-------------+-----------------+----------------+ 3 rows in set (0.02 sec)
以上实例中使用了 RIGHT JOIN,该语句会读取右边的数据表 _tbl 的所有选取的字段数据,即便在左侧表tcount_tbl中没有对应的_author字段值。
PHP 中使用mysql_query()函数来执行SQL语句,你可以使用以上的相同的SQL语句作为mysql_query()函数的参数。
尝试如下实例:
<?php
$dbhost = "localhost:3036";
$dbuser = "root";
$dbpass = "rootpassword";
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die("Could not connect: " . mysql_error());
}
$sql = "SELECT a._id, a._author, b._count FROM _tbl a INNER JOIN tcount_tbl b ON a._author = b._author";
mysql_select_db("W3CSCHOOL");
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die("Could not get data: " . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "Author:{$row["_author"]} <br> ".
"Count: {$row["_count"]} <br> ".
"Tutorial ID: {$row["_id"]} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfullyn";
mysql_close($conn);
?>
使用MySQL二进制方式连接您可以使用MySQL二进制方式进入到MySQL命令提示符下来连接MySQL数据库。实例以下是从命令行中连接MySQL...
在windows系统中,mysql修改密码的方法还是比较多的。本文就为大家介绍四种MySQL修改root密码的方法。方法一:用SET PASSWORD命...
如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE:#!/usr/bin/python# -*- coding: UTF-...
在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 RE...
MySQL Date 函数定义和用法 DATE_ADD() 函数向日期添加指定的时间间隔。 语法DATE_ADD(date,INTERVAL expr type) date 参数是合...
MySQL Date 函数定义和用法 DATEDIFF() 函数返回两个日期之间的天数。 语法DATEDIFF(date1,date2) date1 和 date2 参数是合法的...