Centos7的yum源中默认好像是没有mysql的。所以首先要下载mysql的repo源
1. 下载mysql的repo源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2. 安装mysql-community-release-el7-5.noarch.rpm包
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。
3. 安装mysql
sudo yum install mysql-server
根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。
4. 重置密码
重置密码前,首先要登录
mysql -u root
登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:
sudo chown -R openscanner:openscanner /var/lib/mysql
然后,重启服务:
service mysqld restart
接下来登录重置密码:
mysql -u root
mysql > use mysql;
mysql > update user set password=password(‘123456‘) where user=‘root‘;
mysql > exit;
5. 开放3306端口
sudo vim /etc/sysconfig/iptables
添加以下内容:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
保存后重启防火墙:
systemctl restart firewalld.service
这时从客户端连接的时候可能会报10038错误
(1)首先要确认的是3306端口是不是对外开放了。mysql默认状态下是不开发对外访问的功能的,所以大多数这就是问题的所在。
进入服务器,
~# netstat -an | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
仔细查看,如果都是127.0.0.1,那么说明3306端口没有对外开放,只是监听本地的连接。
Solution:进入到mysql的配置文件所在目录(/etc/mysql/my.cnf)找到文件中如下内容:
bind-address = 127.0.0.1
将bind-address注释掉,或者改成客户端主机IP
(2)下面你还要确认的一件事就是确认客户端用户是否具有权限
mysql>grant all privileges on *.* to username@"%" identified by "password";
mysql>flush privileges;
注意%后面要空一隔
上面的命令授予的用户权限可以访问mysql中的任意数据库(database)和表(table)。
如果连接还是不行,请把防火墙关闭
systemctl stop firewalld.service
这样从其它客户机也可以连接上mysql服务了。