从 CentOS 7 系统开始,MariaDB 成为 yum 源中默认的数据库安装包。在 CentOS 7 及以上的系统中使用 yum 安装 MySQL 包将无法使用 MySQL。您可以选择使用完全兼容的 MariaDB,或依照本文介绍配置来继续使用 MySQL。本文以在 CentOS 7 下安装 MySQL 5.7.21 为例
yum list installed | grep mariadb
yum -y remove mariadb*
进入到要下载到的路径:cd /usr/local/src
下载:wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
如果没有安装 wegt: yum -y install wget
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
查看有哪些版本的mysql: yum repolist all | grep mysql
yum repolist enabled | grep "mysql.*-community.*"
如图所示则安装成功。
yum repolist all | grep mysql
yum install mysql-community-server
一直输 y 就可以了。
systemctl start mysqld
mysql5.7的新特性之一就是在初始化的时候会生成一个自定义的密码,然后你需要找到这个密码,登录的时候输入。注意,输入密码的时候是不显示。
找到密码: 红框的地方就是密码 grep 'temporary password' /var/log/mysqld.log登录数据库:这里-p之后不用输入密码,回车后再输入。改过密码之后登录则是直接在-p后加密码了。
登录数据库:mysql -u root -p
修改密码:
注意,修改的密码太简单会不给修改,把大小写字母和数字加上就肯定可以了。然后切记切记,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,这时输入刚设置的密码,就可以登进数据库了。
--------------------------------------------------------------------------------
远程访问 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,即防火墙开启成功。
这时再输入开放 3306 端口的命令就没有问题了。
--------------------------------------------------------------------------------
默认情况下 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;
允许设置简单密码。
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 #重启防火墙
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