MySQL数据库使用(二):配置、连接远端数据库

Python3.7

pycharm

MySQL 8.0.13

阿里云服务器 windows server 2016

Navicat

 

一、远程数据库的配置

1、在云服务器系统上配置MySQL数据库

安装方法与本地数据库配置方法相同

配置完毕后登入MySQL数据库,并且修改初始密码

 

2、修改访问权限

登入数据库后首先输入

use mysql

选择musql数据库

select host,user,authentication_string,plugin from user;

输入上述代码,可看到root用户的访问权限

+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | authentication_string                                                  | plugin                |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| localhost | root             | *FD571203974BA9AFE270FE62151AE967ECA5E0AA                              | mysql_native_password |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | root             |                                                                        | mysql_native_password |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+

现在的root访问权限是仅限本地登录

下面我们输入

update user set host = "%" where user = "root";

将root的访问权限从‘localhost’改写为‘%’,即所有人都接访问

+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | authentication_string                                                  | plugin                |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| %         | root             | *FD571203974BA9AFE270FE62151AE967ECA5E0AA                              | mysql_native_password |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | root             |                                                                        | mysql_native_password |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+

此时,我们看到的root权限由‘localhost’改变为‘%’

至此,root用户可以在任何ip访问这台数据库了

 

3、开放3306端口访问权限

将root的访问权限设置为‘%’后,cmd输入

netstat -ano

查看3306端口状态  

 协议  本地地址          外部地址        状态           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       688
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       9372
  TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING       9032
  TCP    0.0.0.0:7680           0.0.0.0:0              LISTENING       11348
  TCP    0.0.0.0:8733           0.0.0.0:0              LISTENING       4

状态为:LISTENING

地址为:0.0.0.0:3306,其中0.0.0.0代表监听所有IP

说明3306端口正常

 

下面配置防火墙

开启win server的控制面板,打开防火墙,在‘高级设置’的‘入站规则’中,点击‘新建规则’

创建一个应用于TCP的特定端口-3306的端口规则

连接方式:允许连接

合适应用该规则:全选

至此,端口3306配置完毕

 

上述方案同时可通过关闭防火墙来实现

 

4、阿里云安全组规则设置

端口与访问权限设置完毕,下面配置阿里云服务器的安全组规则

添加3306端口

 

至此,远程MySQL数据库配置完毕

我们可以在cmd下通过登录指令来访问远程数据库

 

三、本地可视化界面连接远端数据库

利用Navicat

 

连接成功

 

四、python连接远端数据库

1、安装PyMySQL

2、代码实现操作数据库

import pymysql


db = pymysql.connect('localhost','root','','zhilian_job')       # 创建连接对象,连接数据库
cursor=db.cursor()                                              # 创建游标对象

# 编写SQL语句
sql_create_table = """CREATE TABLE job_datas (                  
         jobName  VARCHAR(1000) ,
         positionURL  VARCHAR(1000),
         emplType VARCHAR(1000),  
         updateDate VARCHAR(1000),
         endDate VARCHAR(100),
         createDate VARCHAR(1000),
         salary VARCHAR(1000),
         welfare VARCHAR(1000),
         edu_level VARCHAR(1000),
         company_size VARCHAR(1000),
         company_name VARCHAR(1000),
         company_type VARCHAR(1000),
         company_URL VARCHAR(1000),
         apply_count VARCHAR(1000),
         exposure_count VARCHAR(1000),
         click_count VARCHAR(1000)
         );"""                                   

cursor.execute(sql_create_table)                                # 执行SQL语句

 

posted @ 2019-01-22 17:52  cooper_wang  阅读(765)  评论(0编辑  收藏  举报