5 centos7安装MySQL 5.7.31
5.1 准备工作
安装MySQL在集群中
任意一台
机器上, 这里我安装在hadoop91(192.168.86.91)
机器上
5.2 下载
点击 MySQL Community Downloads下载
5.3 删除Centos默认安装的MariaDB
# 查找mariadb安装包名字
rpm -qa | grep -i mariadb
# 卸载mariadb安装包,mariadb-libs-5.5.52-1.el7.x86_64是上一条命令查出结果
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
5.4 上传文件并解压
创建要上传的目录
cd /opt/myinstall
mkdir mysql
将MySQL的安装包文件上传至linux的/opt/myinstall/mysql
目录后解压
# 解压到当前目录
tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar
解压到指定目录中 tar -xvf 压缩文件 -C /指定目录
5.5 rpm安装
按照以下顺序依次安装
rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm
5.5.1 如果安装报错
如果安装mysql-community-server-5.7.31-1.el7.x86_64.rpm时报错, 说明缺少依赖包libaio
[root@hadoop91 mysql]# rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm
警告:mysql-community-server-5.7.31-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
libaio.so.1()(64bit) 被 mysql-community-server-5.7.31-1.el7.x86_64 需要
libaio.so.1(LIBAIO_0.1)(64bit) 被 mysql-community-server-5.7.31-1.el7.x86_64 需要
libaio.so.1(LIBAIO_0.4)(64bit) 被 mysql-community-server-5.7.31-1.el7.x86_64 需要
点击pkgs.org下载libaio的rpm包:libaio-0.3.109-13.el7.x86_64.rpm
上传到linux后执行
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm
重新执行就不会报错了
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm
5.6 启动mysqld服务
注意: 命令后有多余空格执行会报错
执行以下命令
# 启动服务
systemctl start mysqld
# 查看服务状态
systemctl status mysqld
其他命令
# 停止服务
systemctl stop mysqld
# 重启服务
systemctl restart mysqld
5.7 修改登录密码
MySQL5.6及以后版本出处于安全考虑,root密码不为空。所以在MySQL的安装过程中,会生成一个随机密码。
5.7.1 设置跳过密码登录
修改mysql的配置文件
vi /etc/my.cnf
在最后一行添加
# 跳过密码登录
skip-grant-tables
保存后重启服务
systemctl restart mysqld
5.7.2 修改登录密码
输入mysql -u root -p后直接双击两次回车登录
查看root用户的密码命令
mysql> use mysql;
mysql> select authentication_string,password_expired,user from user;
修改密码为
123456
mysql> update mysql.user set authentication_string=password('123456') where user='root';
mysql> update user set password_expired='N' where user = 'root';
解释下为什么要加password()
mysql 4.1之后的版本中,密码采用password()函数哈希后保存。
具体保存在mysql数据库user表的authentication_string字段中。
相应文件为/mysqld/mysql-5.7/data/mysql/user.MYD。
如果执行修改密码的sql报错
修改validate_password_policy
参数的值, 修改允许的密码长度
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
重启mysqld服务
输入quit
退出mysql交互界面
修改/etc/my.cnf
文件将设刚刚添加在最后一行的skip-grant-tables
删除掉或注释掉
vi /etc/my.cnf
保存后重启mysqld服务
systemctl restart mysqld
使用修改后的密码, 重新登录验证是否修改成功
mysql -u root -p
输入刚刚设置的密码123456
, 出现mysql交互页面则安装成功
5.8 修改mysql 编码
修改配置文件
vi /etc/my.cnf
在[mysqld]下添加
collation_server=utf8_general_ci
character_set_server=utf8
default-storage-engine=INNODB
在[client]下添加(如果没有[client],则创建[client])
[client]
default_character-set=utf8
重启mysql服务
systemctl restart mysqld
登录mysql
mysql -u root -p 123456
输入show variables like ‘character_set_%’; 可查看编码
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)
5.9 授权无主机登录
进入mysql交互模式
mysql -u root -p
执行以下命令
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
sql命令解释:
123456是密码
*.* 表示所有数据库下的所有表
'root'@'%' 表示所有主机的root
5.9.1 如果设置无主机登录报错
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因是因为密码设置的过于简单, MySQL有密码强度校验(密码设置时必须包含大小写字母、特殊符号、数字,并且长度大于8位)
解决办法: 必须修改两个全局参数(临时的更改配置,如果重新进入mysql,需要重新设置)
1)修改validate_password_policy参数的值(0 or LOW / 1 or MEDIUM / 2 or STRONG)
mysql> set global validate_password_policy=0;
2)修改密码的长度
mysql> set global validate_password_length=1;
3)重新执行命令
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
5.10 安装成功
至此安装配置成功