1. 程式人生 > >[CentOS Python系列] 四.阿里雲伺服器CentOS連線遠端MySQL資料庫及pymsql

[CentOS Python系列] 四.阿里雲伺服器CentOS連線遠端MySQL資料庫及pymsql

從2014年開始,作者主要寫了三個Python系列文章,分別是基礎知識、網路爬蟲和資料分析。

這裡寫圖片描述 這裡寫圖片描述 這裡寫圖片描述

隨著人工智慧和深度學習的風暴來臨,Python變得越來越火熱,作者也準備從零學習這些知識,寫相關文章。本篇文章講解阿里雲伺服器CentOS系統連線遠端MySQL資料庫及配置過程,同時教大家如何編寫Python操作MySQL資料庫的基礎程式碼,為後面的網路爬蟲並存儲至伺服器打下基礎。

文章非常基礎,希望這系列文章對您有所幫助,如果有錯誤或不足之處,還請海涵~

參考文獻:

一. 建立新使用者

1.登入root使用者,插入新使用者
核心程式碼:
insert into mysql.user(Host,User,Password) value ("localhost","eastmount",password("123456"));

命令如下所示:
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> insert into mysql.user(Host,User,Password) value ("localhost","eastmount",password("123456"));
Query OK, 1 row affected, 3 warnings (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
+-------------------------+-----------+-------------------------------------------+
| host                    | user      | password                                  |
+-------------------------+-----------+-------------------------------------------+
| localhost               | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| izm5e2qvb8hl5w1gjowpsxz | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1               | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost               |           |                                           |
| izm5e2qvb8hl5w1gjowpsxz |           |                                           |
| localhost               | yxz       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost               | mysql     | *95FE99470B7B7CAF1E150B16ACCA48CDE7925813 |
| 39.107.105.166          | yxz       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 39.107.105.166          | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| %                       | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost               | eastmount | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------------------+-----------+-------------------------------------------+
11 rows in set (0.00 sec)


通過 select host, user, password from user 檢視主機、使用者和密碼,可以看到 (localhost, eastmount, 123456) 已經插入成功。
此時,使用者eastmount是可以登入了,通過語句 "mysql -u eastmount -p 123456"。



但是使用該使用者建立資料庫,報錯如下所示,這是需要先進行授權。
mysql> create database douban;
ERROR 1044 (42000): Access denied for user 'eastmount'@'localhost' to database 'douban'


2.root使用者登入再授權
核心程式碼:grant all privileges on *.* to [email protected] identified by "eastmount"; 

mysql -u root -p
123456

use mysql;

grant all privileges on *.* to [email protected] identified by "eastmount"; 

flush privileges;  

quit;

但是此時登入會報錯,如下所示:
[[email protected] ~]# mysql -u eastmount -p
Enter password:
ERROR 1045 (28000): Access denied for user 'eastmount'@'localhost' (using password: YES)


此時需要關閉伺服器修改eastmount登入密碼,重啟服務即可。
3.關閉伺服器更新登入密碼再重新整理許可權

核心程式碼:update user set password=PASSWORD("123456") where user="eastmount";



[[email protected] ~]# service mysqld stop
Stopping mysqld:                                           [  OK  ]
[[email protected] ~]# mysqld_safe --skip-grant-tables &
[1] 30466
[[email protected] ~]# 180220 23:53:36 mysqld_safe Logging to '/var/log/mysqld.log'.
180220 23:53:36 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
mysql -u eastmount -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Eastmount          |
| junyun             |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)

接下來更新eastmount使用者的密碼。



mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set password=PASSWORD("123456") where user="eastmount";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit;


4.重啟MySQL服務
核心程式碼:service mysqld restart


[[email protected] ~]# service mysqld restart
180220 23:57:47 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
[1]+  Done                    mysqld_safe --skip-grant-tables
[[email protected] ~]#

5.登入成功資料庫操作


mysql> create database 20180220df;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 20180220df         |
| Eastmount          |
| doubanl            |
| junyun             |
| mysql              |
| test               |
+--------------------+
7 rows in set (0.00 sec)


mysql> use 20180220df;
Database changed
mysql> create table student(
    ->     id int not null primary key,
    ->     name varchar(16) not null,
    ->     pwd varchar(20) not null
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+----------------------+
| Tables_in_20180220df |
+----------------------+
| student              |
+----------------------+
1 row in set (0.00 sec)

mysql> insert into student(id,name,pwd) values(1,'yangxiuzhang','111111');
Query OK, 1 row affected (0.00 sec)

mysql> select * from student;
+----+--------------+--------+
| id | name         | pwd    |
+----+--------------+--------+
|  1 | yangxiuzhang | 111111 |
+----+--------------+--------+
1 row in set (0.00 sec)
操作介面如下圖所示:




二. 遠端伺服器授權及埠開啟

但此時連線遠端資料庫,仍然報錯“2003-can't connect to MySQL server on (10060)”。



這是需要開啟遠端伺服器並進行公網IP授權,同時開發3306埠號,流程如下:

(一) CentOS開通MySQL3306埠


1.vi /etc/sysconfig/iptables

2.加入如下程式碼,核心: -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

#Firewall configuration written by system-config-firewall
#Manual customization of this file is not recommanded.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

3.儲存退出

4.重啟防火牆:service iptables restart



[[email protected] ~]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]
注意:開放的埠一定要新增到 REJECT 之前。

(二) 開啟遠端訪問許可權


1.mysql -u eastmount -p 123456


2.查詢主機、使用者名稱和密碼:select host,user,password from user;


3.授權:grant all privileges on *.* to [email protected] identified by "123456" with grant option;

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> grant all privileges on *.* to [email protected] identified by "123456" with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
+-------------------------+-----------+-------------------------------------------+
| host                    | user      | password                                  |
+-------------------------+-----------+-------------------------------------------+
| localhost               | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| izm5e2qvb8hl5w1gjowpsxz | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1               | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost               |           |                                           |
| izm5e2qvb8hl5w1gjowpsxz |           |                                           |
| localhost               | yxz       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost               | mysql     | *95FE99470B7B7CAF1E150B16ACCA48CDE7925813 |
| 39.107.105.166          | yxz       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 39.107.105.166          | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| %                       | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost               | eastmount | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 39.107.105.166          | eastmount | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------------------+-----------+-------------------------------------------+
12 rows in set (0.00 sec)
可以看到主機host為39.107.105.166,使用者名稱為eastmount,密碼為123456的已經新增。


但仍然報錯“1045 - Access denied for user 'eastmount' (using password: YES)”。


4.為[email protected]'%'使用者授權

grant all privileges on *.* to [email protected]'%' identified by "123456" with grant option;

flush privileges;

service mysqld restart  


此時許可權開啟成功,同時伺服器的3306埠開啟。

三. 阿里雲伺服器安全設定

如果現在您仍然無法通過阿里雲主機CentOS連線遠端MySQL資料庫,那您需要設定阿里雲的安全組規則,而網上更多的資料忽略了該步驟。下面進行簡單敘述:

第一步:開啟阿里雲伺服器管理控制檯頁面,點選“管理”按鈕


第二步:在彈出的頁面中,選擇“本例項安全組”,然後點選“配置規則”


第三步:在彈出如下介面中點選“新增安全組規則”


第四步:在“新增安全組規則”介面選擇“MySQL(3306)”,其中3306是MySQL資料庫的埠號,同樣可以設定其他的埠。


第五步:授權物件填寫“0.0.0.0/0”,表示允許任意公網IP登入。


設定成功如下圖所示:



第六步:Navicat for MySQL軟體登入,輸入IP地址、使用者名稱和密碼,如下所示。



檢視20180220df資料庫的student表如下所示:


四. Python簡單操作資料庫

下面簡單給出pymsql庫操作MySQL資料庫的Python程式碼,這是查詢功能。

#!usr/bin/python
#coding: utf-8
#author: yxz
import pymysql

#建立連線
con = pymysql.Connect(host='localhost', user='yxz', passwd='123456', db="Eastmount")
#建立遊標
cur = con.cursor()
#執行SQL語句
cur.execute("select * from douban;")
#獲取所有執行結果
res = cur.fetchall()
print(res)
#執行語句提交
con.commit()
cur.close()
#關閉連線
con.close()


如果需要連線遠端伺服器的Python程式碼如下所示:

#!usr/bin/python
#coding: utf-8
#author: yxz
import pymysql

#建立連線
con = pymysql.Connect(host='39.107.105.166', user='eastmount', passwd='123456', db="20180220df")
#建立遊標
cur = con.cursor()
#執行SQL語句
cur.execute("insert into student(id,name,pwd) values('2','eastmount','20180222')")
cur.execute("select * from student;")
#獲取所有執行結果
res = cur.fetchall()
print(res)
#執行語句提交
con.commit()
cur.close()
#關閉連線
con.close()

執行結果如下所示:

[[email protected] eastmount]# python test.py
((1, 'yangxiuzhang', '111111'), (2, 'eastmount', '20180222'))
[[email protected] eastmount]#

總之,希望這篇基礎文章對您有所幫助,尤其是剛接觸雲伺服器的新手,如果您是高手,還請多提意見,共同提高。祝大家新年快樂,又一年過去了,娜我們來年一起進步加油。 
( By:Eastmount CSDN 2018-02-22 中午11點http://blog.csdn.net/Eastmount)

相關推薦

[CentOS Python系列] .阿里伺服器CentOS連線遠端MySQL資料庫pymsql

從2014年開始,作者主要寫了三個Python系列文章,分別是基礎知識、網路爬蟲和資料分析。  隨著人工智慧和深度學習的風暴來臨,Python變得越來越火熱,作者也準備從零學習這些知識,寫相關文章。本篇

[CentOS Python系列] 一.阿里伺服器安裝部署及第一個Python爬蟲程式碼實現

從2014年開始,作者主要寫了三個Python系列文章,分別是基礎知識、網路爬蟲和資料分析。它們都是基於Windows系統下的Python程式設計,每個系列都從安裝過程、基礎知識到實際應用三個方面進行講

[CentOS Python系列] 五.阿里部署web環境通過IP地址訪問伺服器網頁

假設我們伺服器CentOS系統已經部署好了,現在我們需要向伺服器上傳一個HTML主頁,通過IP地址展示我們的內容,如何實現呢?本篇文章主要介紹講述部署阿里雲伺服器web環境,並通過IP地址訪問網頁的過程

阿里伺服器CentOS搭建

一. 阿里雲伺服器CentOS搭建 阿里雲的CentOS雲系統是一個集成了Python環境基於yum安裝的映象,包含Nginx、MySQL、Pyenv、IPython等。 CentOS(Community Enterprise Operating System,中文意思是:社

阿里伺服器CentOS之mariadb資料庫安裝

參考文章:https://blog.csdn.net/Ghost_leader/article/details/53366942 由於CentOS 7 將mysql全部都改成了mariadb。所以在CentOS 下yum安裝mysql是沒有用的。雖然還是有一大堆軟體包叫做mysql。 不過不

阿里伺服器(CentOS-6.8)

Linux安裝Solr,一定要注意版本問題! 建議:Tomcat7,安裝5.4及以下的Solr,Tomcat8安裝5.5及以上的Solr。 本文是Tomcat7安裝Solr5.4 一、下載地址 二、安裝Solr 1、把官網下載的solr-5.4.0.tgz上

《個人紀錄》 阿里伺服器Centos環境做後臺Android開發

僅方便自己回顧!!! 下載Xshell和Xftp,方便檔案管理。 使用Xshell連線伺服器,並實現檔案的傳輸。 1、出現問題:ImportError: No module named tensorflow 沒有tensorflow的元件,解決方法:pip instal

阿里伺服器centos安裝MySQL

1、首先需要安裝repo源 CentOS 7的yum源中預設是沒有mysql的,所以,為了解決這個問題我們首先下載安裝mysql的repo源。 依次執行以下命令: # rpm -ivh mysql57-community-release-el7-7.noarch.r

阿里伺服器Centos 6.8 64位漏洞 CVE-2017-5336 處理

RHSA-2017:0574 漏洞包括四個,分別是 CVE-2017-5336(GnuTLS 存在棧緩衝區溢位的漏洞)、CVE-2017-5337(GnuTLS 存在堆緩衝區溢位漏洞)、CVE-2017-5335(GnuTLS 存在基於緩衝區溢位的漏洞)和 CVE-2016-8610(Op

flask部署到阿里伺服器centos+python3+gunicorn+nginx詳細教程(從本地windows可執行部署伺服器環境上可執行)

前言: 做了flask網站,是因為軟體工程課程的任務,每個小組期末需要交一份的可執行的專案,我們小組做的是flask留言牆,用的flask做後臺邏輯功能,前端h5,javascript,jquery,實現網頁佈局,樣式,前端驗證...做完,想把這個網站掛到外網上,就需要伺服器...這裡用了阿

阿里 伺服器 centos 開啟80埠、3306埠

1:配置防火牆,開啟80埠、3306埠 vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允許80埠通過防火牆) -A INPUT -

阿里伺服器centos mysql 遠端訪問

解決阿里雲MySQL遠端連線不上的問題:       首先登陸到資料庫 mysql -u 使用者名稱 -h localhost -p 密碼 開啟資料庫 mysql; use mysql;

阿里伺服器centos部署web環境的步驟詳解

主要任務 使用ssh工具,在阿里雲伺服器配置jdk,tomcat,mysql,並部署專案。 所需工具 SSH Secure Shell 、jdk1.7(linux版)、tomcat7(linux版)、mysql5.5(linux版) 文中有連結

阿里伺服器CentOS下安裝mysql

安裝MySQL主要有兩種方法:一種是通過原始碼自行編譯安裝,這種適合高階使用者定製MySQL的特性,這裡不做說明;另一種是通過編譯過的二進位制檔案進行安裝。二進位制檔案安裝的方法又分為兩種:一種是不

阿里伺服器CentOS(64位)安裝配置LAMP伺服器(Linux+Apache+PHP5+MySQL)

一 、使用 yum install httpd 命令安裝apache //博主使用的是阿里雲centos伺服器,所以採用yum命令安裝,ubuntu下的使用sudo apt-get install

阿里伺服器 Centos 7 安裝mysql8.0.16

官網地址:https://dev.mysql.com/downloads/mysql/ 一、mysql-8.0.16-2.el7

阿里伺服器搭建》------ 安裝MySql

本系列教程的搭建環境為阿里雲伺服器,其他伺服器可作為參考。 本文主要講述在伺服器中搭建MySql資料庫,並且在本地進行遠端連線 執行Mysql的安裝命令(三條命令) 執行命令一:yum install mysql 執行命令二:yum install mysql-serve

阿里伺服器ssh連線,客戶端一段時間沒響應就斷掉的解決辦法

1.開啟配置檔案 vim /etc/ssh/sshd_config 2.找到下面兩行 #ClientAliveInterval 0 #ClientAliveCountMax 3 去掉註釋,並修改 ClientAliveInterval 30 //客戶端每隔多少秒向服務

阿里伺服器設定-圖文教程完整版本在配置過程中遇到的問題解決方案

最近一個客戶讓我幫它配置阿里雲伺服器,說實話,好長時間沒有做了,記得做伺服器的時候,還是在N年前,不過,經驗還是有的,於是答應了,可用過才知道那個呢費勁啊,下邊幫設定中遇到的問題,總結如下: 1.Windows 2008 R2 3389埠更改 1.開始--執行---輸入r

阿里伺服器Ubuntu12.04_64bit+php5+MySQL部署過程詳解

今日部署專案做測試,買了一個阿里雲的伺服器,買來只有映象,阿里的教程做的也真是….太專業化的術語讓人看得一愣一愣的,各種百度,弄了一個下午才部署好環境,特此將部署過程寫下來供各位參考。(部署的環境為Ubuntu12.04_64bit+php5+mysql),安裝