Yum 是一个基于 rpm 的软件包管理器, 它可以从指定的服务器自动下载 RPM 包并且安装, 可以自动处理依赖性关系, 并且一次安装所有依赖的软体包, 无须繁琐地一次次下载、安装.
下载命令:
wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
用 yum 命令安装下载好的 rpm 包.
yum -y install mysql80-community-release-el7-2.noarch.rpm
安装 MySQL 服务器.
yum -y install mysql-community-server
这一步由于要下载安装文件, 可能会花一些时间. 安装完成后就会覆盖掉之前的 mariadb.
1.3.2 MySQL 数据库设置
启动 MySQL
systemctl start mysqld.service
查看 MySQL 运行状态, Active 后面的状态代表启功服务后为 active (running), 停止后为 inactive (dead), 运行状态如图:
systemctl status mysqld.service
重新启动 Mysql 和停止 Mysql 的命令如下:
service mysqld restart #重新启动 Mysql
systemctl stop mysqld.service #停止 Mysql
此时 MySQL 已经开始正常运行, 不过要想进入 MySQL 还得先找出此时 root 用户的密码, 通过如下命令可以在日志文件中找出密码:
为了加强安全性, MySQL8.0 为 root 用户随机生成了一个密码, 在 error log 中, 关于 error log 的位置, 如果安装的是 RPM 包, 则默认是/var/log/mysqld.log. 只有启动过一次 mysql 才可以查看临时密码
使用命令:
grep 'temporary password' /var/log/mysqld.log
查看初始的随机密码:
登录 root 用户
mysql -u root -p
然后输入上述查到的初始密码. 登录后还不能做任何查询或建库操作, 因为 MySQL 默认必须修改初始的随机密码之后才能操作数据库,否则会报错:
修改密码为"123456", 注意结尾要有分号, 表示语句的结束.
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
这里有个问题, 新密码设置的时候如果设置的过于简单会报错:
原因是因为 MySQL 有密码设置的规范, 具体是与 validate_password_policy 的值有关:
MySQL 完整的初始密码规则可以通过如下命令查看:
密码的长度是由 validate_password_length 决定的, 而 validate_password_length 的计算公式是:
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
如果想要设置简单的密码必须要修改约束, 修改两个全局参数:
- validate_password_policy代表密码策略, 默认是 1:符合长度, 且必须含有数字, 小写或大写字母, 特殊字符. 设置为 0 判断密码的标准就基于密码的长度了. 一定要先修改两个参数再修改密码
mysql> set global validate_password.policy=0;
- validate_password_length代表密码长度, 最小值为 4
mysql> set global validate_password.length=4;
此时密码就可以设置的很简单, 例如 1234 之类的. 到此数据库的密码设置就完成了.
但此时还有一个问题, 就是因为安装了 Yum Repository, 以后每次 yum 操作都会自动更新, 如不需要更新, 可以把这个 yum 卸载掉:
[root@localhost ~]# yum -y remove mysql80-community-release-el7-2.noarch
在 CentOS 中 MySQL 的主要配置所在的目录:
1 /etc/my.cnf 这是 mysql 的主配置文件
2 /var/lib/mysql mysql 数据库的数据库文件存放位置
3 /var/log mysql 数据库的日志输出存放位置
一些可能会用到的设置:
设置表名为大小写不敏感:
1.用root帐号登录后, 使用命令
systemctl stop mysqld.service
停止MySQL数据库服务,修改vi /etc/my.cnf,在[mysqld]下面添加
lower_case_table_names=1
这里的参数 0 表示区分大小写,1 表示不区分大小写.
2.做好数据备份,然后使用下述命令删除数据库数据(删除后, 数据库将恢复到刚安装的状态)
rm -rf /var/lib/mysql
3.重启数据库 ,此时数据库恢复到初始状态.
service mysql start
4.重复安装时的操作, 查找临时密码
grep 'temporary password' /var/log/mysqld.log
5.修改密码. 密码8位以上, 大小写符号数据. 如想要使用简单密码, 需按照上述安装流程中的步骤进行操作.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '****';update user set host = "%" where user='root';
6.刷新MySQL的系统权限相关表
FLUSH PRIVILEGES;
此时, MySQL的表名的大小写不再敏感.
1.3.3 设置远程连接:
如果你想要在另外一台电脑上连接 centos 上安装的 MySQL, 那么还需要一些其他的设置.
首先需要将 MySQL 设置为可以远程连接,设置 mysql 库的 user 表中帐号的 host 为%, %表示可以从任意 ip 连接 mysql, 为了安全性, 也可以设置为你自己所用于连接 centos 上 MySQL 的电脑所使用的 IP.
其次, MYSQL 8.0 内新增加 mysql_native_password 函数,通过更改这个函数密码来进行远程连接.
例如,更改 root 用户的 native_password 密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY'MyPass@123';
接下来为 centos 的防火墙开启 MySQL 所使用的 3306 端口,并重新加载防火墙:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
完成上述设置后, 重新启动 MySQL 服务:
service mysqld restart #重新启动 Mysql