安装
1、注意:安装msyql前务必卸载cenos自带的mariadb,否则会报错
查询是否已安装mariadb
rpm –qa | grep mariadb
已安装彻底卸载:
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
2、去msyql官网下载对应的rpm包
common、lib、 client、 server,后边依赖前边,要依次安装
rpm –ivh 对应rpm包名
3、安装server,可能会提示:
libaio.so.1()(64bit) is needed by mysql-community-server-5.7.27-1.el7.x86_64
运行:
yum install libaio
之后再次运行rpm –ivh mysql命令
4、查看是否安装成功
rpm -qa | grep mysql 或者 yum list installed | grep mysql
5、启停msyql
启动mysql
systemctl start mysqld.service
查看mysql状态
systemctl status mysqld.service
关闭mysql
systemctl stop mysqld.service
安装成功后,登录mysql修改root密码
1、需要先把安装时生成的临时密码查询出来
grep 'temporary password' /var/log/mysqld.log
2、使用初始密码登录后,修改root用户的密码
好气呀!最大的坑就在这儿呢!
刚开始用的这条sql修改的密码:
alter user 'root'@'localhost' identified by '密码,必须包含大写、小写、数字、符号';
修改之后,为了让修改起作用,切记要运行以下sql:
flush privileges;
设置允许root用户远程连接,%代表允许从任何主机用root连接mysql
grant all privileges on *.* to 'root' @'%' identified by ' 你的密码' with grant option;
flush privileges;
退出,用上边修改的密码登录mysql,成功了,看着好像大功告成啦!
但是,后来用navcat远程连接mysql时却总是提示:
ERROR 1045 (28000): Access denied for user ‘root’@‘登录电脑的ip’
欲入坑切往下看–远程连接
远程连接mysql
我这次是在阿里云的CES服务器上安装的mysql,为了平时CRUD方便,第一时间就要用navcat进行远程连接。为了能连接成功,需要满足4个条件:
1. mysql允许的 Host 是 %
即允许远程登录mysql,下边的sql就是授予root用户远程登录权限,上文修改密码时已经设置过。
grant all privileges on *.* to 'root' @'%' identified by ' 你的密码' with grant option;
flush privileges;
可以查看下用户和允许登陆的主机:
select host,user from user;
2.服务器防火墙允许访问3306端口
centos7有iptables和firewall两种防火墙默认都是关闭的,需要手动启动,推荐firewall这种方式,而且很好设置。
systemctl start firewalld.service #启动防火墙
systemctl stop firewalld.service #停止防火墙
systemctl enable firewalld.service #设置防火墙开机启动
firewall-cmd --state #查看状态,如果没启动需要先启动
firewall-cmd --list-ports #查看哪些端口被放行
firewall-cmd --zone=public --add-port=80/tcp –permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent #增加要放行的端口
firewall-cmd --reload #增加放行端口后,使最新的防火墙设置规则生效。
说明:
#–zone #作用域
#–add-port=80/tcp #添加端口,格式为:端口/通讯协议
#–permanent 永久生效,没有此参数重启后失效
如下图,把80、3306端口放行:
3. 确保 bind-address 正确配置, 路径 /etc/my.cnf
vim /etc/my.cnf
如果查看mysql配置文件看到如下图所示,就不用改了
如果有:bind-address=127.0.0.1需要注释,这样只能本地连接
4、在阿里云CES实例的安全组策略中放行3306端口
最后的大坑
远程登录时,总是报错:
*ERROR 1045 (28000): Access denied for user ‘root’@'登录电脑的ip’ *
查了无数资料,不行
把服务器整个还原又重装msyql,还是无法连接,说多了都是泪呀!
最后,偶然情况下运行了下边的修改密码的sql:
update mysql.user set authentication_string=password('密码') where user='root'
再次连接,竟然就成了,午夜12点之前莫名其妙的就成了,于是某猿热泪盈眶,趁热写出了这些肺腑之言。
切记,切记,切记!!!
5.7以后必须要用下边这种方式修改密码才能远程登录:否则只能本地登录