[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),安裝