写了一个python脚本来连数据库,mysql8和python3.7,但是这个库明明命令行能连上,但是程序就是死活连不上,报一个这样的错:
Traceback (most recent call last):
File “addLoan.py”, line 73, in
add_loan_to_mysql()
File “addLoan.py”, line 45, in add_loan_to_mysql
db = pymysql.connect(**db_saas)
File “/usr/local/lib/python3.7/site-packages/PyMySQL-0.9.3-py3.7.egg/pymysql/init.py”, line 94, in Connect
File “/usr/local/lib/python3.7/site-packages/PyMySQL-0.9.3-py3.7.egg/pymysql/connections.py”, line 325, in init
File “/usr/local/lib/python3.7/site-packages/PyMySQL-0.9.3-py3.7.egg/pymysql/connections.py”, line 599, in connect
File “/usr/local/lib/python3.7/site-packages/PyMySQL-0.9.3-py3.7.egg/pymysql/connections.py”, line 871, in _request_authentication
File “/usr/local/lib/python3.7/site-packages/PyMySQL-0.9.3-py3.7.egg/pymysql/connections.py”, line 942, in _process_auth
File “/usr/local/lib/python3.7/site-packages/PyMySQL-0.9.3-py3.7.egg/pymysql/connections.py”, line 684, in _read_packet
File “/usr/local/lib/python3.7/site-packages/PyMySQL-0.9.3-py3.7.egg/pymysql/protocol.py”, line 220, in check_error
File “/usr/local/lib/python3.7/site-packages/PyMySQL-0.9.3-py3.7.egg/pymysql/err.py”, line 109, in raise_mysql_exception
pymysql.err.OperationalError: (1045, “Access denied for user ‘saas_dev_admin’@‘172.16.32.39’ (using password: YES)”)
代码如下:
#添加进件到mysql
def add_loan_to_mysql():
db_saas={
"host":"192.168.101.47",
"user":"slg",
"password":"enter",
"db":"fund",
"charset":"utf8"
}
db = pymysql.connect(**db_saas)
cursor=db.cursor()
loanIdStr="802003261048260010"
loan_id_num=int(loanIdStr)
for i in range(1):
loan_id = str(loan_id_num)
insert_sql="insert into (很长略过)"
try:
print("正在创建第"+str(i)+"条记录...")
cursor.execute(insert_sql)
db.commit()
add_loan_to_mongo(loan_id,"1204213923985756164","张三","浦发房贷")
except Exception as e:
traceback.print_exc()
print("Error: unable to insert data")
db.rollback()
loan_id_num=loan_id_num+1
db.close()
百思不得其解,从网上找了各种方法都不行。后来问了DBA大哥说是可能跟SSL有关,因为数据库的配置是这样:
但其实我们在连接库的时候并没有使用证书,使用navicat时候只是勾选一个这样的选项:
于是盲猜只是在配置中增加一个ssl的空项?闭着眼睛将配置改为这样:
db_saas={
"host":"192.168.101.47",
"user":"saas_dev_admin",
"password":"Saas_dev",
"db":"saas_fund_harbour",
"charset":"utf8",
"ssl":{'ssl':{}} #很屎虽然什么都没填但是必须有这项配置
}
居然好了!!!泪奔!!!