1. 下载mysql的repo源
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm2.安装mysql-community-release-el7-5.noarch.rpm包
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
3. 安装mysql
$ sudo yum install mysql-server4. 重置密码 重置密码前,首先要登录(刚装完,默认密码为空)$ mysql -u rootmysql > use mysql; mysql > update user set password=password('123456') where user='root'; mysql > exit;带有密码的启动:mysql -uroot -proot;(用户名和密码都是root)5.开放3306端口
如果要想远端访问MYSQL数据库,还需要:
(1) 给指定用户赋予远端访问mysql数据库的权限;
(2) 配置防火墙放开对3306端口的限制;
1给指定用户赋予远端访问mysql数据库的权限
授权命令是:
grant 权限1,权限2,…权限n on 数据库名.表名 to用户名@用户地址 identified by‘口令’
[root@bogon 桌面]# mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;"
或:mysql>GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Warning: Using a password on the commandline interface can be insecure.
用root用户的身份执行grant命令(-e参数表示执行一段sql命令),含义是:把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。如果你只想让位于192.168.1.108机器上面的root用户访问,命令如下:
mysql -uroot -ppassok -e "GRANT ALL PRIVILEGES ON *.* TO'root'@'192.168.1.108' IDENTIFIED BY 'root' WITH GRANT OPTION;"
或:mysql>GRANT ALL PRIVILEGES ON *.* TO'root'@'192.168.1.108' IDENTIFIED BY 'root' WITH GRANT OPTION;
ps:第一个root为用户名,第二个root为密码;
2 配置防火墙放开3306端口的限制
CentOS 7.0版本的防火墙,默认使用的是firewall,与之前的版本使用iptables是不一样,只是firewall处于开启状态,就不可能远端访问MYSQL数据库。
首先将firewall关闭:
[root@bogon 桌面]# systemctl stop firewalld.service #停止firewall
[root@bogon 桌面]# systemctl disable firewalld.service #禁止firewall开机启动
---------------------------------------一下部分由于时间原因,未验证------------------------------------------------
CentOS虽然默认的不是iptables,但是也是已经安装好的,然后我按照网上的方法,为3306端口配置开放规则:
[root@bogon 桌面]# vi /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or usesystem-config-firewall
# please do not ask us to add additionalports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --stateRELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-ARH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp--dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-withicmp-host-prohibited
-A FORWARD -j REJECT --reject-withicmp-host-prohibited
COMMIT
然后重启防火墙:
[root@bogon 桌面]# service iptables restart
然后立刻用mysql workbench测试,发现还是一样连不上。
然后执行下面命令永久关闭iptables:
[root@bogon bin]# chkconfig iptables off
注意:正在将请求转发到“systemctl disable iptables.service”。
然后立刻用mysql workbench测试,发现还是一样连不上。
重启CentOS系统,连接成功
看来要重启才能生效。
进一步测试:
查看firewall状态是关闭的:
[root@bogon bin]# service firewall status
Redirecting to /bin/systemctl status firewall.service
firewall.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
查看iptables状态也是关闭的:
[root@bogon bin]# service iptables status
Redirecting to /bin/systemctl status iptables.service
iptables.service - IPv4 firewall withiptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled)
Active: inactive (dead)
然后我又启动iptables防火墙,还是能够访问,然后把/etc/sysconfig/iptables中的规则全部注释掉之后,还是能够访问,重启还是可以,不知道为什么,查看iptables的状态也是处于激活状态的:
[root@bogonbin]# service iptables status
Redirecting to /bin/systemctl status iptables.service
iptables.service - IPv4 firewall withiptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled)
Active: active (exited) since 日 2015-01-1818:17:07 CST; 20s ago
Process: 14440 ExecStop=/usr/libexec/iptables/iptables.init stop(code=exited, status=0/SUCCESS)
Process: 14648 ExecStart=/usr/libexec/iptables/iptables.init start(code=exited, status=0/SUCCESS)
MainPID: 14648 (code=exited, status=0/SUCCESS)
1月 18 18:17:07 bogoniptables.init[14648]: iptables: Applying firewall rules: [ 确定 ]
1月 18 18:17:07 bogonsystemd[1]: Started IPv4 firewall with iptables.
反正永久关闭iptables防火墙是可以的,但是记得要重启。
7. 设置mysql开机自启动
设置开机启动服务选择使用chkconfig命令,可以看到我们永久性关闭iptables就用的这个命令,命令的格式如下:
chkconfig 功能说明:检查,设置系统的各种服务。
语法:chkconfig [--add][--del][--list][系统服务]或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
--add 添加服务
--del 删除服务
--list 查看各服务启动状态
我这里安装好了mysql之后默认就是开机自启动的:
[root@bogon 桌面]# chkconfig --list mysql
注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
欲查看对特定 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysql 0:关 1:关 2:开 3:开 4:开 5:开 6:关
如果不是开机自启动,使用开启MySQL服务自动开启命令:
chkconfig mysqld on
chkconfig mysql on