当前位置:首页 > 行业动态 > 正文

如何访问MySQL数据库并使用函数进行操作?

MySQL数据库的远程访问权限可以通过改表法和授权法两种方式来设置。

MySQL数据库访问权限及函数如何访问MySQL

如何访问MySQL数据库并使用函数进行操作?  第1张

一、MySQL数据库访问权限

1、连接MySQL服务器:使用mysql命令连接MySQL服务器。mysql h localhost u root p,然后输入密码进行连接。

2、查看当前远程访问权限配置:在MySQL控制台中执行以下SQL语句,查看当前用户的远程访问权限。

SELECT User, Host FROM mysql.user;

默认情况下,root用户只能本地访问(Host为localhost)。

3、开启远程访问权限

改表法:登录MySQL后,修改mysql数据库中的user表的host字段。

UPDATE user SET host = '%' WHERE user = 'root';
FLUSH PRIVILEGES;

授权法:通过GRANT语句授权特定用户从任意主机访问。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4、配置防火墙:确保防火墙允许MySQL的默认端口3306的访问,以Ubuntu系统的ufw为例:

sudo ufw allow 3306/tcp
sudo ufw reload

5、测试远程连接:在远程计算机上使用MySQL客户端或其他数据库管理工具测试连接。

mysql h your_server_ip u root p

二、函数如何访问MySQL数据库

1、创建并配置RDS实例:登录VPC控制台,创建专有网络VPC和交换机,然后在RDS控制台创建RDS实例,选择VPC和交换机。

2、配置白名单:进入RDS实例详情页,设置白名单,将专有网络中default的内网IP段或FC配置的交换机内网IP段添加到白名单中。

3、创建安全组:在安全组控制台新建安全组,点击创建安全组,设置名称和网络类型,添加规则允许3306端口的访问。

4、配置函数计算服务:在函数计算控制台创建服务,选择与RDS相同的区域,配置专有网络和交换机信息,授予ENI操作权限。

5、编写并上传函数代码:在函数代码中使用第三方模块如pymysql访问MySQL数据库,编辑index.py文件,示例代码如下:

import pymysql
import os
import logging
def handler(event, context):
    db_host = os.environ['MYSQL_HOST']
    db_port = int(os.environ['MYSQL_PORT'])
    db_user = os.environ['MYSQL_USER']
    db_password = os.environ['MYSQL_PASSWORD']
    db_name = os.environ['MYSQL_DBNAME']
    connection = pymysql.connect(
        host=db_host,
        port=db_port,
        user=db_user,
        password=db_password,
        db=db_name
    )
    try:
        with connection.cursor() as cursor:
            sql = "SELECT * FROM users"
            cursor.execute(sql)
            result = cursor.fetchall()
            for row in result:
                print(row)
    except Exception as e:
        logging.error(e)
    finally:
        connection.close()

6、部署并测试函数:将函数代码和依赖包打包上传至函数计算平台,部署并测试函数是否能正确访问MySQL数据库。

三、FAQs

1、如何在MySQL中设置强密码?:在创建或修改用户时,使用PASSWORD()函数对密码进行加密。

CREATE USER 'newuser'@'%' IDENTIFIED BY PASSWORD('yourpassword');

2、如何限制特定IP访问MySQL?:在授权语句中指定IP地址。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'specific_ip' IDENTIFIED BY 'password';
0