如何使用python保护mysql连接

时间:2013-12-02 09:08:55

标签: python mysql security

我正在编写使用mysql db的python脚本。我想保护mysql连接,本地用户无法访问该数据库。有没有好的方法来产品呢?

#!/usr/bin/python

import MySQLdb

# Open database connection

db = MySQLdb.connect("localhost","username","password","db")


# prepare a cursor object using cursor() method

cursor = db.cursor()

# Prepare SQL query to INSERT a record into the database.

cursor.execute("CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, userid VARCHAR(30), 
activity_id VARCHAR(30), date_time VARCHAR(30), screenshot_filename VARCHAR(255), screenshot_md5 VARCHAR(255), num_clicks INT, num_of_mouse_movements INT, num_pause INT );")


try:

   # Execute the SQL command

   cursor.execute(sql)

   # Commit your changes in the database

   db.commit()

except:

   # Rollback in case there is any error

   db.rollback()

   # disconnect from server

   db.close() 

2 个答案:

答案 0 :(得分:2)

MySQL支持SSL连接,如“https”(Web服务器和Web浏览器之间的安全连接)。需要修改客户端代码才能建立连接。这使得您的数据不被其他用户隐藏。需要修改客户端以进行如下安全连接。摘自http://www.mysqlperformanceblog.com/2013/06/22/setting-up-mysql-ssl-and-secure-connections/

[root@centos6 ~]# cat mysql-ssl.py
#!/usr/bin/env python
import MySQLdb
ssl = {‘cert’: ‘/etc/mysql-ssl/client-cert.pem’, ‘key’: ‘/etc/mysql-ssl/client-key.pem’}
conn = MySQLdb.connect(host=’127.0.0.1′, user=’ssluser’, passwd=’pass’, ssl=ssl)
cursor = conn.cursor()
cursor.execute(‘SHOW STATUS like “Ssl_cipher”‘)
print cursor.fetchone()

答案 1 :(得分:0)

执行此操作的标准方法是让Web /应用程序服务器通过专用(本地)网络访问数据库服务器,而不是通过公共网络(Internet)访问数据库服务器。

如果数据库服务器与Web /应用程序服务器位于同一台计算机上,则可以在环回IP地址(127.0.0.1)上托管数据库服务器,该地址只能从同一台计算机上直接访问。