Python自学,番外篇之一 Mac安装MySQL数据库
---------请叫我序言------------
已经两天的苦战,终于可以启动MySQL服务,并且可以通过终端正常查询数据库表结果,总算是翻过了一个山头;
记录下自己的辛酸里程,为后期的像自己一样菜鸟的码友提供一丢丢的帮助,不妄老夫这么一番翻云覆雨...呃...不好意思,是一番周折~
1前言
在写Day4的作业时,原本想着使用文件操作及dump、loan的方式进行shopping、order、trade系统的数据库,虽经过一番折腾(file.text的创建、dic的数据保存、string->dic等)后,可以实现数据的创建、保存和读取的各个流程,但是总觉得不爽...原因在于在真是的项目开发中,基本不会通过操作文件的形式来进行数据的保存和读取,大多使用MySQL的方式,所以心生杂念...
我要搞一个本地的数据库,并且可以实现新建库表,以及python可以实现链接和数据的更新、读取等功能!!!
我去,顿时觉得自己好牛逼的样子,但是这个要怎么搞,确一脸懵逼...只能依赖度娘了。
弯路(时间紧可以直接跳过此处,直接下翻至“正路”篇)
背景:因为公司给配置的是thinkpad本,装win10系统,一来,自己是产品汪,平时总开会,二来,公司的电脑实在是又沉又慢,所以只能割爱用自己的mac电脑,所以,这次是在自己mac电脑安装数据库,至于win,出门右转自行百度查询(解决mac已经心里交瘁,win实在是有心无力了)。
经过一顿的折腾,终于查出来一个多次被参阅且看似可行的方案,参考链接如下:
https://blog.csdn.net/catstarxcode/article/details/78940385
然后自己按照经验贴一步一步开始自己的小目标尝试,也是迈向深坑的第一步...
Step1:去官网下载dmg安装包
点击下载这个177M的dmg文件,然后跳转至忽悠注册页面,所谓的忽悠下载,就是不细看,你绝对会被忽悠着注册的页面...
对于13寸的air来说,第一屏正好将真正的下载入口给盖住...心机的产品哈...此时,我们肯定是“start my download”,甭客气,直接下载,走起~
呃...本想着飞起,不曾想还没上跑到,就折在家门口了。用公司的网下载,足足下载了进一个小时,40-50kb/s的速度已经算是撞大运了。苦苦等待了一个小时,终于下载完的安装文件(文件确实186M的...),犹如渴求雨露一般。雨露如下图:
Step2:安装dmg镜像文件
双击启动,按要求一直傻瓜式操作即可,安装挺顺利。
Step3:启动MySQL服务
采用的是系统偏好设置的方式进行服务启动
1、进入系统偏好设置
2、在系统偏好底部有启动MySQL
备注:该图片未截图,具体在下图的位置标示
3、启动MySQL Server
点击MySQL之后,打开如下启动窗口。
本想着启动这一步之后,就可以大功告成了,然后...就没有然后了...
怎么也启动不起来,尝试了好几次始终是红点...
第一天因为这个,折腾了了大半天,不管是重置密码,还是重新安装程序,都无济于事。
备注:最后间接猜到在这无法重启的原因,待下文分析。
最后,实在没有办法放弃挣扎了,求助使用Mac的研发朋友。
一起做项目的朋友推荐使用homebrew管理平台来安装MySQL,可以较便捷的安装。
4、卸载MySQL
第二次卸载MySQL,采用的命令行来进行卸载,命令行通过网上查询所得。
1 sudo rm /usr/local/mysql 2 sudo rm -rf /usr/local/mysql* 3 sudo rm -rf /Library/StartupItems/MySQLCOM 4 sudo rm -rf /Library/PreferencePanes/My* 5 vim /etc/hostconfig (and removed the line MYSQLCOM=-YES-) 6 rm -rf ~/Library/PreferencePanes/My* 7 sudo rm -rf /Library/Receipts/mysql* 8 sudo rm -rf /Library/Receipts/MySQL* 9 sudo rm -rf /var/db/receipts/com.mysql.*
正道
随着第二次的卸载MySQL,第一天MySQL之路,在临近下班时基本算是报废了。开始尝试另外一条路的尝试,前方道路的探索,依然进行中...
Step1:安装homebrew
在homebrew官网查询到安装命令,官网地址猛戳这里
内心小感动一下,竟然有中文的,大爱~
备注:如果安装brew时,提示链接超时:Failed to connect to raw.githubusercontent.com port 443: Connection refused
解决方案参考文章:
https://github.com/hawtim/blog/issues/10
https://zhuanlan.zhihu.com/p/90508170
复制命令,并在命令终端粘贴,然后回车...biubiu的开始执行,中间貌似没有其他操作,直接就安装成功。
构建完成如下图所示(自己没有截图,所以选取当时参考的文档截图):
参考地址:https://blog.csdn.net/sir_coding/article/details/77509602
Step2:安装MySQL
基于homebrew安装MySQL,直接输入命令行:
brew install mysql
激动的按下回车键,然后就继续开始biubiu的执行,下载超级简单,有木有...
顺利的安装完成,内心一阵小激动!!!
Step3:启动MySQL服务
基于homebrew,启动MySQL服务,然后输入命令行:
mysql.server start
又是开始一顿执行,心想着终于可以搞定了,然后还是太幼稚了。
系统报错,当时的报错的大致意思是:需要macOS Sierra系统或者更高的系统
大脑快速扫描记忆,貌似在什么地方看到过macOS系统版本要求,呃...
需要MacOS10.13版及以后的系统,然后此时我电脑的系统版本是:MacOS 10.11...内心千万头羊驼狂奔...上午和下午一直无法启动MySQL Server应该也是这个问题。
ps:自觉进行系统升级,💊千万不能停!!!
Step4:更新升级Mac系统
看了下Mac最新的系统是MacOS Hight Sierra 10.13,系统升级包5.2G....
开始了漫漫的安装包下载之路...
...
...
真正下载完的是在第二天的早晨,在一夜的龟速下载速度下,终于修得正果。
安装更新时,竟然要求插电源、插电源、插电源,内心是绝望的!
工作日,电源基本都在公司放着,大早上只能等到10点到公司后再升级系统。
到公司第一件事时插上电源,开始升级,升级竟然要45分钟...就这样一直到11:30才基本升级完事;
考虑到30min肯定搞不定,上午就没再继续。
ps:请忽略我的mac air低配版,穷人啊,没办法,微笑脸😊~
Step5:继续启动MySQL Server
吃完中午继续开搞。
1、更新homebrew,确保homebrew是最新
brew update
2、启动MySQL Server
mysql.server start
这次很顺利的启动了服务,太不容易了,激动的老汉内牛满面~
3、进行基本配置
继续输入命令行:
mysql_secure_installation
4、进行MySQL的配置,执行过程如下:
1 Securing the MySQL server deployment. 2 3 Connecting to MySQL using a blank password. 4 5 VALIDATE PASSWORD PLUGIN can be used to test passwords 6 and improve security. It checks the strength of password 7 and allows the users to set only those passwords which are 8 secure enough. Would you like to setup VALIDATE PASSWORD plugin? 9 10 Press y|Y for Yes, any other key for No: N // 这个选yes的话密码长度就必须要设置为8位以上,但我只想要6位的 11 Please set the password for root here. 12 13 New password: // 设置密码 14 15 Re-enter new password: // 再一次确认密码 16 By default, a MySQL installation has an anonymous user, 17 allowing anyone to log into MySQL without having to have 18 a user account created for them. This is intended only for 19 testing, and to make the installation go a bit smoother. 20 You should remove them before moving into a production 21 environment. 22 23 Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y // 移除不用密码的那个账户 24 Success. 25 26 27 Normally, root should only be allowed to connect from 28 'localhost'. This ensures that someone cannot guess at 29 the root password from the network. 30 31 // 提示禁止远程root登录 32 Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n 33 34 ... skipping. 35 By default, MySQL comes with a database named 'test' that 36 anyone can access. This is also intended only for testing, 37 and should be removed before moving into a production 38 environment. 39 40 // 提示删除默认自带的test数据库 41 Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y 42 - Dropping test database... 43 Success. 44 45 - Removing privileges on test database... 46 Success. 47 48 Reloading the privilege tables will ensure that all changes 49 made so far will take effect immediately. 50 51 // 提示是否重新加载privilege tables 52 Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y 53 Success. 54 55 All done!
5、测试MySQL登陆,输入命令行:
mysql -u root -p
然后输入密码,不管输入的是电脑密码还是刚设置的MySQL密码都出现如下报错:
Access denied for user 'shang'@'localhost' (using password: YES)
也是一脸懵逼,内心要跪的节奏,但是我打不死的小强...
6、解决Access denied的问题
百度问题找问题的解决方法,在网上找了很多解决办法,但是基本只有一个,在.ini文件中的mysqld条目添加。
没有学过bash命令行的我,只能按照网上的大致操作首发手法是sudo vim命令,然后就输入:
sudo vim my.ini
然后确实打开了.ini文件,机智如我啊。
按"I",不需要双引号,然后按下回车,代表Insert的含义,进入编辑状态,在最后一行输入
skip-grant-tables
然后按下左上角的"esc"退出编辑状态,然后在最后输入":",不需要双引号,等待输入命令,输入WQ。功能如下。
W:write,写入
Q:quit,退出
再回车,就保存退出了。
7、重启MySQL服务
关闭MySQL服务,输入:
service.mysql stop
然后再重启服务,输入:
mysql.server start
尝试着再测试MySQL登陆,输入:
mysql -u root -p
输入MySQL密码,竟然神奇的没有再报错,而是现实mysql>,说明已经登陆成功,老泪纵横啊😭~~
然后赶紧按着教程输入:showdatabase,然后没有任何反应,接续慰问度娘。
尝试了好几次,终于在输入:
show databases;
奇迹发生了...
备注:其中的atm是自己后续通过MySQL Workbench工具创建的,关于MySQL Workbench的介绍,请戳番外篇之二,此处不再过多介绍。
然后输入:quit,回车
退出登陆。
over~
另外,在进行完成基础配置(mysql_secure_installation)后,按照一个教程的进行my.cnf的配置
然后按照其中的步骤进行操作,并且将配置信息全部保存在my.cnf文件中
参考链接:https://blog.csdn.net/cheng649090216/article/details/79246333
But,在写此blog时,又查看了下自己的my.cnf文件,发现其中竟然什么内容都没有,如下图:
内心一下小慌张,会不会MySQL Server服务出问题了,
赶紧重新查看一下,服务正常启动,一起OK,所以此处的my.cnf可以忽略