1.现在centos上默认是没有yum源的,yum安装的是 MariaDB。所以我们需要自己先配置yum源。配置yum源步骤如下:(参考自风Boy)
下载yum源:
wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
安装yum源
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
查看有哪些版本的mysql:
yum repolist all | grep mysql
2.安装
我默认使用安装mysql5.7 这里如果带宽小的话,会很慢,而且试验结果是阿里云比腾讯云快。
yum install -y mysql-community-server
3.启动mysql,要知道在centos7中,没有了service命令,都是使用systemctl命令。注意启动的时候是start mysqld而不是mysql。
而在centos6中,使用service mysqld start
systemctl start mysqld
查看状态
systemctl status mysqld
如图所示,是已经启动了
4.登录数据库,修改数据库密码
mysql5.7的新特性之一就是在初始化的时候会生成一个自定义的密码,然后你需要找到这个密码,登录的时候输入。注意,输入密码的时候是不显示。
找到密码: 红框的地方就是密码
grep 'temporary password' /var/log/mysqld.log
登录数据库:这里-p之后不用输入密码,回车后再输入。改过密码之后登录则是直接在-p后加密码了。
mysql -uroot -p
修改密码
注意,修改的密码太简单会不给修改,把大小写字母和数字加上就肯定可以了。然后切记切记,mysql里面的命令要加分号!分号!分号!
SET PASSWORD = PASSWORD('Admin123!');
设置远程可以登录
现在这样是无法在本地用工具登录访问的,现在要做两件事,一件事是将云服务器上的3306端口开放;另一件事是配置远程可以访问。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;
先设置刚才的密码可以远程登录,然后使用flush命令使配置立即生效。
如果还不行可以尝试重启一下数据库。
5.修改一些简单的配置:
mysql的配置文件真的很多,有的还很蛋疼。比如默认的字符集是拉丁字符集,每次创建数据库的时候要设置字符集;默认还不支持group by语句,默认的时区也不是我们现在的北京时间(东八区),会导致我们的时间差了13个点。针对以上说几个简要的配置,更多的配置在以后遇到了再加上,或者留言吧!
先输入exit退出数据库客户端。
打开配置文件,yum安装的默认在/etc文件夹下:
vim /etc/my.cnf
在[mysqld]下面添加,不需要分号
字符集:注意是utf8而不是utf-8!
character-set-server=utf8
这时候使用show variables like 'char%';就可以查看到字符集都是utf8了
sql支持group by语句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
设置时区为东八区
default-time_zone = '+8:00'
最后重启数据库,使配置生效。
systemctl restart mysqld
6.设置开机启动
systemctl enable mysqld
systemctl daemon-reload
安装记录就到这里,更多的配置在遇到后继续更新。
iptables配置允许mysql远程访问
sudo vi /etc/iptables.up.rules
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
service iptables save
service iptables restart
开通3306 端口的行必须在icmp-host-prohibited前
MySQL 连接错误Can't connect to MySQL server on (61)
链接数据库时忽然遇到一个问题。Mac Navicat链接时报错Can’t connect to MySQL server on ‘xx.xx.xx.xx’ (61)。
PS. win版Navicat 报错Can’t connect to MySQL server on ‘xx.xx.xx.xx’ (10038)
其中xx.xx.xx.xx是ip地址。
1、查看该用户是否有远程登录的权限
mysql> SELECT * FROM mysql.user;
+-----------+-----------+
| User | Host |
+-----------+-----------+
| M | % |
| mysql.sys | localhost |
| root | localhost |
| tommy | % |
| showhilllee | % |
+-----------+-----------+
5 rows in set (0.00 sec)
- 很显然,M是允许从其它服务器登陆的。
2、查看 MySQL Server 是不是监听了 3306 端口
执行命令netstat -tulpen
netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 16801 1507/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 17222 1970/master
tcp6 0 0 :::3306 :::* LISTEN 27 46396 22054/mysqld
tcp6 0 0 :::22 :::* LISTEN 0 16803 1507/sshd
tcp6 0 0 ::1:25 :::* LISTEN 0 17223 1970/master
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 49600 22999/dhclient
udp 0 0 0.0.0.0:43504 0.0.0.0:* 0 48850 22999/dhclient
udp6 0 0 :::47875 :::* 0 48851 22999/dhclient
我在这里也没有问题。
这里如果没有监听3306端口或者只监听了localhost
(0.0.0.0表示监听所有),则在my.cnf
添加下面这一行
bind-address = 0.0.0.0
3、如果服务器是 CentOS7,将 MySQL 服务加入防火墙
执行命令
sudo firewall-cmd --zone=public --permanent --add-service=mysql
返回success。然后继续执行
sudo systemctl restart firewalld
重启防火墙之后就能正常访问了。