python连接mysql的问题

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
头像
monokuma
帖子: 22
注册时间: 2019-03-14 12:55
系统: Ubuntu

python连接mysql的问题

#1

帖子 monokuma » 2019-03-16 21:33

1、最近学习mysql,按照CSDN上面的一个教程:https://blog.csdn.net/weixx3/article/details/80782479 安装;

2、安装完成后在“配置远程访问"前停下了,这时候是可以通过“sudo mysql -uroot -p”命令输入密码进入mysql>的;

3、但是这个时候并不能在python3.7.2中使用pymysql库的示例代码对mysql进行连接,且报错:“OperationalError: (2003, "Can't connect to MySQL server on 'hostlocal' ([Errno -2] Name or service not known)")”;

4、另外在终端如果只是输入“mysql -uroot -p”命令是不能进入mysql>的;

5、我以为是远程配置或其他问题,就跟着教程后面把“配置远程访问”也配置了,但是做完后就发现”sudo mysql -uroot -p“命令无法进入mysql>了,而且会报两行的error:”mysql: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 22!“ 和 “mysql: [ERROR] Fatal error in defaults handling. Program aborted!”


PS:1.第5点查过网上的解答是说 /etc/mysql/my.cnf 文件的保存编码是“utf-8”,要重新保存格式,但是教程是windows下面的,我刚刚接触ubuntu几天,用终端去过路径下的文件,但是用gedit命令打开的是一个ie空白文件,我也不知道则怎么回事,因为ls命令下是有显示该文件的。
2.搞了1天了,还是不知道怎么处理,请问各位大神有谁可以教教我怎么能在anaconda 的spyder下的python环境中使用pymysql连接mysql呢?
3.我使用的pymysql例子是崔庆才大神python3爬虫教材中的例子:

代码: 全选

import pymysql

db = pymysql.connect(host='hostlocal', user='root' , password='123456', port=3306)
cursor = db.cursor()
cursor. execute ('SELECT VERSION()')
data = cursor.fetchone()
print ('Database version:', data)
cursor.execute ("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8")
db.close()
头像
astolia
论坛版主
帖子: 6514
注册时间: 2008-09-18 13:11

Re: python连接mysql的问题

#2

帖子 astolia » 2019-03-18 11:13

那篇教程里说的很清楚,配置远程访问是当你需要从其他机器上来访问本机的mysql数据库时才需要配置。你在同一个机器上跑程序就不需要。自己去把相关配置改回来。gedit显示空白十有八九是你没有用sudo权限不够

错误信息已经清楚说明了原因,你为什么不仔细看呢?
monokuma 写了: 2019-03-16 21:33 OperationalError: (2003, "Can't connect to MySQL server on 'hostlocal' ([Errno -2] Name or service not known)")
本地回环地址127.0.0.1的别名是localhost,你写成hostlocal,系统当然找不到了。另外localhost也需要在/etc/hosts里标注才行,并不是所有环境都一定会有,直接用127.0.0.1就完了
头像
monokuma
帖子: 22
注册时间: 2019-03-14 12:55
系统: Ubuntu

Re: python连接mysql的问题

#3

帖子 monokuma » 2019-03-18 22:26

关键是127.0.0.1这个方法早已经试过也是不行,权限问题是不存在的,root下面试过,sudo也试过
fuhuizn
帖子: 948
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

Re: python连接mysql的问题

#4

帖子 fuhuizn » 2019-03-19 8:56

楼主要注意两个问题:
1、Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
表示root只能登录 "localhost"

2、”mysql: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 22!“ 和 “mysql: [ERROR] Fatal error in defaults handling. Program aborted!”
因为my.cnf配置错误,mysql服务进程已经崩溃了
头像
monokuma
帖子: 22
注册时间: 2019-03-14 12:55
系统: Ubuntu

Re: python连接mysql的问题

#5

帖子 monokuma » 2019-03-19 13:13

那么解决的办法是完全卸载掉MySQL再重新安装一次吗?
那么之前配置的东西就会卸载干净了?
头像
astolia
论坛版主
帖子: 6514
注册时间: 2008-09-18 13:11

Re: python连接mysql的问题

#6

帖子 astolia » 2019-03-19 15:20

monokuma 写了: 2019-03-19 13:13 那么解决的办法是完全卸载掉MySQL再重新安装一次吗?
那么之前配置的东西就会卸载干净了?
如果你知道怎么“完全”卸载的话,是的。就算没卸载干净,自己手动删除就行了。
还有/etc/mysql/my.cnf内容空白的问题,你确定路径啊,文件名之类的没弄错?毕竟你第一次照那篇文章修改是成功了的
头像
monokuma
帖子: 22
注册时间: 2019-03-14 12:55
系统: Ubuntu

Re: python连接mysql的问题

#7

帖子 monokuma » 2019-03-19 17:54

1. 这个路径我是查过有的,ls在对应文件夹下是有显示,所以这个问题很奇怪,不乱搞了,完全卸载是有很多文章的,当然有些是不行的,总之就是找多一些然后卸载.

2. mysql完全卸载:https://www.cnblogs.com/pighui/p/10422927.html ; https://blog.csdn.net/w3045872817/artic ... s/77334886 两个都用,而且两个看命令上也有很大差别, 前面那个也会卸载client, 感觉一起搞一遍就干净了.

3. 然后又看到一篇blog说mysql默认的安装方法安装的是MySQL5.7版本,但是该版本是只支持到Ubuntu17的,如果是Ubuntu18.04最好使用MySQL8.0,所以在完全卸载后根据网友教程安装MySQL8.0 , 教程:https://blog.csdn.net/iehadoop/article/details/82961311

4. 但是安装过程中会发现 sudo apt update 命令有问题,找了很久发现的方法:https://blog.csdn.net/lishanleilixin/ar ... s/88205644
然后接着做就会会顺利安装MySQL8.0了.

5. 后来测试也成功,但最后我怀疑并不是MySQL的问题,应该是Python程序中的命令打错了:utf8 不应该打成 utf-8, 因为不是复制粘贴,就按照习惯来了,哈哈哈哈~~~~~~~~

PS: 但是在安装MySQL8.0的时候会弹出窗口输入root密码,在安装MySQL5.7的时候是默认跳过的,所以5.7版本的root密码是系统随机给的乱序码,需要根据网友的解决方法进去读取这个密码然后进入mysql修改root密码;
另外如果根据这个blog来做的话是不需要进去看系统乱给的root密码的:https://blog.csdn.net/weixx3/article/details/80782479;
而且5.7版本安装完后在终端使用的时候是不能少sudo的,但是8.0版本安装完没有这个问题, mysql -uroot -p 命令直接可以使用,所以我也觉得MySQL8.0版本和Ubuntu18.04会更适配一些吧.
留个经验给各位像我一样刚接触Ubuntu和MySQL的新人.
回复