零基础如何自学MySQL数据库？
本人是个活生生的例子，大学学的仪器仪表专业，毕业前第一份实习工作是电路板测试。由于项目中接触到了数据库的东西，纯粹当高级点的excel表格用的。当时有点兴趣，没参加过培训，0基础自学mysql和linux，现任国内某公有云mysql &&mongodb  dba。对于非计算机出身的我，大学只会hello word和跑马灯，期间过程确实非常曲折，分享下我的自学过程： 1、 自己在windows和linux上安装了mysql，自学linux的基础知识，学习mysql的最基础的知识，即怎么写sql，存储过程，表的设计等，从0到熟悉大概花了3个月 ，推荐《mysql入门很简单》。 2、系统地较为深入地学习mysql的sql优化，备份和恢复，参数优化，架构优化，硬件层面的优化，高可用方案，复制技术等等，这段时间你不一定能实际接触到这些，就像我当初那样，肯定没什么公司招一个小白。我选择自己看书，推荐《高性能mysql》，里面所有的章节都需要看一遍，以现在的水平肯定看不懂，但需要知道大概怎么回事，为后续的找mysql初级dba的工作打一个铺垫，这个过程大概也需要3个月。 3、 纸上得来终觉浅，完成以上两步，我开始准备找一份mysql相关的工作，而不是天天用着excel表格做着select * from table_sb这样的工作。当然我这么猥琐的人肯定不会裸辞，该画的电路板也一样画，业余时间开始投初级mysql dba的工作，并且不间断地学习，网上各种找mysql面试的相关题目（实际上我当时完全没有任何实战经验），陆续收到一些面试，凭借之前自学的mysql知识，开始胡乱吹牛逼，先混进去再说。你不做mysql实际相关的工作，永远也不知道自己之前认知的db知识有多幼稚。友情提示一点，一般公司都没有专职dba的，所以面试的时候一定要自信，其实你学了这么多，虽然毫无实战经验，理论知识很大概率比面试你的人牛逼，所以各种吹，我就这样真正进入初级dba的圈子（由于这时对linux还处于cd ls的水平，所以之前也根本没做过运维），这个边工作边找工作的过程又持续了2个月。 4、真正进入互联网，接触生产环境后，这是我进步最大的时候。第一步需要将之前所学真正地应用起来，并且应用的过程中，再回头看之前的书籍，这时候需要真正去理解，而不是似是而非，一知半解。这时再推荐《高性能mysql 第三版》，全本再看一遍，这时需要全部看懂，另外还有《mysql技术内幕：innodb存储引擎》等等。总之这段时间就需要开始关注mysql一些细节了，比如db故障处理，高可用，负载均衡等等的具体实现了。另外，linux的知识同步也要深入去学习，至少会写shell脚本，常见的linux知识等，我在这花了1年多；5、  dba的工作一般是非常轻闲的，毕竟不是大公司，技术能力有限，该学的也学得差不多了，接触不到海量数据，高并发等比较锻炼人的场合，于是我又准备跳了。于是来了公有云，现在每天运维万多个db实例，平均每天处理5+个紧急db故障，几乎mysql会遇到的问题，感觉都遇到了，能感觉到技术实力和经验也在每天都在积累，在进步。但是感觉还是欠缺了很多，下一步就看你选择了，是再去研究源代码，底层原理的东西多点，还是数据库运维和应用多一点，就比如业界姜承尧，何登成与叶金荣的区别。由于我的历史原因，对c++等几乎不懂，平时也用不到，所以看代码等事实际太累，于是我再去学mongodb，接了公司mongodb运维的活，算是在广度上的一个扩展，万一哪天mysql不行了呢 6、 总之，对于db小白来说，最重要的一点就是，学习的过程不能断。 PS  上面的方法比较野路子，适合没什么基础的童鞋，如果本来就是DBA，比如从oracle转到mysql，那么建议直接看mysql官方文档，而官方文档是db达到一定水平后必看，出问题时必查的权威文档