今天准备在阿里云centos7上装一个mysql 碰到许多问题,记录一下
Mysql 下载地址 https://dev.mysql.com/downloads/mysql/#downloads
下载第一个就可以了612.1M需要注册登录如果没有可以私信我
然后安装参考http://www.jb51.net/article/87160.htm?pc
安装的时间就开始碰到问题
MySQL的my.cnf文件(解决5.7下没有my-default.cnf)
参考http://www.bubuko.com/infodetail-2167283.html
接着遇到新问题
Failed to start mysqld.service: Unitnot found
首先需要安装mariadb-server
~]#yum install -y mariadb-server
启动服务
~]# systemctl start mariadb.service
添加到开机启动
~]# systemctl enable mariadb.service
进行一些安全设置,以及修改数据库管理员密码
~]#mysql_sceure_installation
至此完成!
参考 https://www.cnblogs.com/lushengle/p/7607953.html
接着遇到新问题
“var/lib/mysql”目录不存在
直接创建 mkdir /var/lib/mysql
参考 http://blog.csdn.net/qq_32331073/article/details/76229420
由于没有授权导致出现下一个问题
下午又安装了Nginx 所以耽搁了mysql的安装
第二天接着安装mysql
接着遇到新问题
Can’t connect to local MySQL server throughsocket ‘/var/lib/mysql/mysql.sock’
这个问题首先看sock是不是指向那个路径
vi /etc/my.cnf
socket=/var/lib/mysql/mysql.sock
显示指向正确,那就是权限问题
参考
https://www.cnblogs.com/eoiioe/archive/2008/12/28/1363947.html
在mysql 安装的地方执行 chown -R mysql:mysql /var/lib/mysql
然后再次启动mysql,此时启动成功
接着新问题 密码过期
在MariaDB配置文件/etc/my.cnf [mysqld]中加入skip-grant-tables一行:
[Richard@localhost ~]$ sudo vi/etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables #加入这一行
接着新问题mysql 进程杀不死
解决方法 参考 http://blog.csdn.net/wzqzhq/article/details/73733173
关闭 service mysqlstop
重启 service mysqlrestart
使用无密码登录
mysql -u root
登录进去以后,数据库选择mysql,修改user表下用户名为root的那条记录,将password_expired设为N。这样随机密码就有效了,可以用密码登录了。
如果希望修改root密码,则在登录mysql后,执行下面两条sql即可:
update mysql.user set authentication_string=password('123456') whereuser='root' and Host = 'localhost';
flush privileges;
然后再把skip-grant-tables一行 删除 重启service mysql restart
接着新问题远程客户端连接不上去
查看防火墙状态:systemctl status firewalld 或者 firewall-cmd --state
启动防火墙:systemctl start firewalld
停止防火墙:systemctl stop firewalld
我先把 3306端口加入防火墙
centos6
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
centos 7以上
vi /etc/firewalld/zones/public.xml
或者用命令行 firewall-cmd--zone=public--add-port=3306/tcp--permanent
参考 http://blog.csdn.net/jack85986370/article/details/51169203
以及 http://www.mamicode.com/info-detail-1030830.html
防火墙规则放开后我本地windows还是Telnet 不通 3306端口
接着在网上搜索,发现阿里云自己也有安全策略
没有3306端口 通过右上角快速创建规则将3306端口加到入方向进去
再次本地Telnet 3306端口终于成功了,本地客户端也连接成功
忙活了两个下午,总结一下 centos 7 和centos 6的版本有很大的区别 尤其是防火墙那里,而mysql5.7 和5.7以下版本也有区别