linux下的mysql安装远程连接配置(基于centos7,mysql5.6.37)
最近突然想折腾下linux,由于有一段时间没接触了,有点生疏。基于现在很多人都是用centos代替redhat来作为服务器,所以我们也用centos来折腾吧!本人用虚拟机,所以很简单,直接去centos官网下载镜像我是选择最小安装镜像的,虚拟机安装centos可参考这里(查看原文可进入相关参考链接),特别要注意的是到了“安装信息摘要”那里,记得在“网络和主机名”,那里将网络打开,不然会不安装网卡,那到时就坑了 ,我安装时没截图,下图是网络上找到。
接下来回到正传了,首先因为某某原因大家都知道了,所以还是先把改下yum的下载源改为阿里yum源的吧!按照他的帮助在linux终端中执行
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
然后执行yum makecache生成缓存就行了。
1、开始安装mysql
按照以前的做法,直接运行yum命令
yum install -y mysql-server mysql mysql-deve
安装mysql,mysql-server和mysql-deve即可,然后到最后你会发现,哎呀,报错了,找不到mysql-server,哼,第一步就出错了,真是的。好吧!这是目前centos7中的yum中没有mysql-server的原因。解决方法有两种,
(1)自己去mysql官网下载mysql-server的rpm包,自己手动安装。(例子可自己百度下centos安装mysql-server,本人就是使用这个解决方法)
(2)不安装mysql了,安装mariadb,这是MySQL社区开发的分支,也是一个增强型的替代品。上面的命令则是改为
yum -y install MariaDB-server MariaDB MariaDB-devel
即可,但相对的以后有些地方,如启动服务什么的都得用mariaDB这个服务名,如systemctl start mariadb(个人喜欢统一名字,且敲惯mysql,所以我使用第一种方案解决)
安装完后默认root用户是没有密码的,我们可以直接登录,然后设置密码,执行的命令如下
//保险起见,先重启下服务
service mysqld restart
//使用root用户,不用密码直接登录
mysql -u root
//登录成功,转到mysql数据库
mysql > use mysql;
//设置密码
mysql > update user set password=password('123456') where user='root';
//添加密码后,退出,以后就可以用root密码登录了
mysql > exit;
接下来就可以进行一些mysql的设置了,这里就不多说了,但需要注意的是设置编码为utf-8的形式又改了,以前装的时候都是设置default-character-set=utf8,现在mysql拆分成了服务端和客户端,我们现在装的是服务端,所以在my.cnf中的配置是
[mysqld]
character_set_server=utf8
2、创建mysql用户
我们要给远程使用肯定不能用root用户了,给不同的人分配不同的权限,所以我们就需要创建不同的用户了,执行命令如下
use mysql
//创建账号user1密码为password的用户
CREATE USER 'user1'@'%' IDENDIFIED BY 'password';
//这里的%号代表所有的ip都可以连接,如果要指定ip可访问,只需将%改成指定的ip即可
其中这里还有一个坑,%号说是所有ip都可以访问,但是却不包括localhost的,所以你会发现在本机根本登不进去,所以想本机也可以登录有两种方式一种是将本地的mysql访问ip改为本机的ip,不要使用localhost。第二种则是再执行一次上面的创建用户命令,把%号改为localhost即可。
3、为用户授权
接下来你使用user1登录mysql后,你会发现任何数据库和表都操作不了,这是因为还没给该用户设置可以访问哪些数据库的权限。
命令为GRANT privileges ON databasename.tablename TO 'username'@'host'
我想让user1通过任一ip访问的都可以访问所有数据库,且有增删改查的权限,所以执行以下命令
//通过任何ip地址访问,都可以访问所有数据库表且有所有权限
GRANT ALL ON *.* TO 'user1'@'%'
想对创建mysql用户和授权更多了解的可参考这篇文章
4、配置防火墙
现在你在本地可以用user1登录操作数据库了,但是你会发现使用远程连接是根本连不上,是的,被防火墙堵了。
解决方式也有两种1、直接关闭防护墙。2、配置通行端口或服务
由于centos7的防火墙改成了firewall-cmd,所以网上很多都是介绍关闭firewall-cmd,启用iptables,配置通行端口。(这个网上很多,这里不说了)。但居然centos7都用firewall-cmd了,那以后的版本应该都是会用这个东西的,既然如此我们就了解下,用用吧!想了解更多的可参考这里,这里就只针对mysql进行配置。我们知道mysql默认端口是3306通过tcp传输,所以我们增加3306可以访问的权限就可以了。命令如下
//zone代表区域,这里让所以的都通行,add-port表示增加的端口,--permanent表示永久协议
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//重新加载防火墙规则
firewall-cmd --reload//我为了保险,一般不会执行这个命令,而是直接重启防火墙服务,反正他重启很快
service firewalld restart
好的!到了这里我们就可以使用user1用户进行远程登录我们的mysql数据库!