Linux 在线安装 mysql5.7

从 CentOS 7 系统开始,MariaDB 成为 yum 源中默认的数据库安装包。在 CentOS 7 及以上的系统中使用 yum 安装 MySQL 包将无法使用 MySQL。您可以选择使用完全兼容的 MariaDB,或依照本文介绍配置来继续使用 MySQL。本文以在 CentOS 7 下安装 MySQL 5.7.21 为例

 1. 检查 MariaDB 是否安装

yum list installed | grep mariadb

 Linux 在线安装 mysql5.7_第1张图片

 2. 卸载全部 MariaDB 相关

yum -y remove mariadb*

 3. 下载 MySQL 的 YUM 源

 进入到要下载到的路径:cd /usr/local/src

下载:wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

 如果没有安装 wegt:  yum -y install wget

 4. 安装 MySQL 的 YUM 源

  rpm -ivh mysql57-community-release-el7-11.noarch.rpm

查看有哪些版本的mysql:  yum repolist all | grep mysql

5. 检查 MySQL 的 YUM 源是否安装成功

yum repolist enabled | grep "mysql.*-community.*"

Linux 在线安装 mysql5.7_第2张图片

如图所示则安装成功。

6. 查看 MySQL 版本

yum repolist all | grep mysql

7. 安装 MySQL

yum install mysql-community-server

一直输 y 就可以了。

8. 启动 MySQL 服务

systemctl start mysqld

9. 测试连接 MySQL 服务

mysql5.7的新特性之一就是在初始化的时候会生成一个自定义的密码,然后你需要找到这个密码,登录的时候输入。注意,输入密码的时候是不显示。
找到密码: 红框的地方就是密码    grep 'temporary password' /var/log/mysqld.log

 登录数据库:这里-p之后不用输入密码,回车后再输入。改过密码之后登录则是直接在-p后加密码了。

  登录数据库:mysql -u root -p

 Linux 在线安装 mysql5.7_第3张图片Linux 在线安装 mysql5.7_第4张图片

修改密码:

注意,修改的密码太简单会不给修改,把大小写字母和数字加上就肯定可以了。然后切记切记,mysql里面的命令要加分号!分号!分号!
SET PASSWORD = PASSWORD('Admin123!');

设置远程可以登录:

现在这样是无法在本地用工具登录访问的,现在要做两件事,一件事是将云服务器上的3306端口开放;另一件事是配置远程可以访问。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;

先设置刚才的密码可以远程登录,然后使用flush命令使配置立即生效。
如果还不行可以尝试重启一下数据库。

 

----------------------------------------------------------------------
mysql -u root 或者 mysql

--------------------------------------------------------------------------------

提示:

刚安装的 MySQL 是没有密码的,这时如果出现:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),解决如下:

① 停止 MySQL 服务:systemctl stop mysqld 

② 以不检查权限的方式启动 MySQL: mysqld --user=root --skip-grant-tables &

③ 再次输入 mysql -u root 或者 mysql,这次就可以进来了。

④ 更新密码:

MySQL 5.7 以下版本:UPDATE mysql.user SET Password=PASSWORD('123456') where USER='root';

MySQL 5.7 版本:UPDATE mysql.user SET authentication_string=PASSWORD('123456') where USER='root';

⑤ 刷新:flush privileges;

⑥ 退出:exit;

设置完之后,输入 mysql -u root -p,这时输入刚设置的密码,就可以登进数据库了。

--------------------------------------------------------------------------------

10. 防火墙设置

 远程访问 MySQL,需要开放 3306 端口:

firewall-cmd --permanent --zone=public --add-port=3306/tcp

firewall-cmd --permanent --zone=public --add-port=3306/udp

firewall-cmd --reload

如果是 CentOS 7,需要将 MySQL 服务加入防火墙,然后重启防火墙:

firewall-cmd --zone=public --permanent --add-service=mysql

systemctl restart firewalld

--------------------------------------------------------------------------------

提示:

在输入 firewall-cmd --permanent --zone=public --add-port=3306/tcp 时可能会报 'FirewallD is not running',是说防火墙本身就没有打开,解决方法:

① 查看防火墙状态:systemctl status firewalld,会发现状态是 dead,即防火墙未开启。

② 打开防火墙:systemctl start firewalld

③ 再次查看防火墙状态:systemctl status firewalld,这时会发现状态变为 running,即防火墙开启成功。

 Linux 在线安装 mysql5.7_第5张图片

 

这时再输入开放 3306 端口的命令就没有问题了。

--------------------------------------------------------------------------------

11. 设置允许远程访问


默认情况下 MySQL 是不允许远程连接的,所以在 Java 项目或者 MySQLWorkbench 等数据库连接工具连接服务器上的 MySQL 服务的时候会报 "Host 'x.x.x.x' is not allowed to connect to this MySQL server"。可以通过下面的设置解决。详细可以参考之前写的一篇文章 XXX is not allowed to connect to this MySQL server。

 ① grant all privileges on *.* to root@"%" identified by '0';

② flush privileges;

--------------------------------------------------------------------------------

提示:

在执行第一条命令的时候,可能会报:

'ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.' 需要让我们重置密码。原因是因为我刚刚的命令中设置的数据库密码是0,这个密码过于简单,不符合 MySQL 的安全要求。只要重新设置一个复杂点的密码就可以了:

mysql> SET PASSWORD = PASSWORD('xxx');   //xxx 是重置的新的复杂的密码

--------------------------------------------------------------------------------

思考:

之前设置简单密码是没有问题的,可能原因:

① 可能目前环境是 CentOS 7 + MySQL 5.7.21,安全性有所提升。

② 也有可能是之前的数据库设置过

mysql> set global validate_password_policy=0;

mysql> set global validate_password_length=1;

允许设置简单密码。

12. 相关命令

MySQL 相关:

 systemctl start mysqld    #启动mysql

systemctl stop mysqld    #停止mysqld

systemctl restart mysqld    #重启mysqld

systemctl enable mysqld    #设置开机启动

systemctl status mysqld    #查看 MySQL Server 状态

防火墙相关:

systemctl status firewalld    #查看防火墙状态

systemctl start firewalld    #打开防火墙

systemctl stop firewalld    #关闭防火墙

systemctl restart firewalld    #重启防火墙

13. 参考网址

https://blog.csdn.net/qq_32786873/article/details/78843362

https://blog.csdn.net/qq_32786873/article/details/79225039

https://jingyan.baidu.com/article/5552ef47f509bd518ffbc933.html

http://blog.sina.com.cn/s/blog_a0d71a9d0102wlz3.html

 

你可能感兴趣的:(Linux)