我正在编写使用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()
答案 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)上托管数据库服务器,该地址只能从同一台计算机上直接访问。