准备基础文件
安装方式为:RPM安装 centos.pkgs.org/
numactl-libs-2.0.12-5.el7.x86_64.rpm
libaio-0.3.109-13.el7.x86_64.rpm
mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar
删除原有的mariadb,不然装不进msyql
- 查询:
rpm -qa | grep mariadb
- 卸载mariadb:
rpm -e --nodeps mariadb-libs-****-1.el7_5.x86_64
开始安装
- 检查安装libaio环境:
rpm -qa|grep libaio
- 没有则安装,上传后安装命令:
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
- 下载mysql5.7的tar压缩包/解压:
mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar
- 安装mysql-community-common-5.7.9-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-5.7.9-1.el7.x86_64.rpm --force --nodeps
- 安装mysql-community-libs-5.7.9-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.9-1.el7.x86_64.rpm --force --nodeps
- 安装mysql-community-devel-5.7.9-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.9-1.el7.x86_64.rpm --force --nodeps
- 安装mysql-community-libs-compat-5.7.9-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.9-1.el7.x86_64.rpm --force --nodeps
- 安装mysql-community-client-5.7.9-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.9-1.el7.x86_64.rpm --force --nodeps
- 安装mysql-community-server-5.7.9-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.9-1.el7.x86_64.rpm --force --nodeps
4~9 可以使用命令 rpm -Uvh *.rpm --nodeps --force 自动根据依赖安装。
检查是否安装成功
rpm -qa|grep mysql
- 关闭mysql服务:
service mysqld stop
数据库初始化
mysqld --initialize --user=mysql
数据库初始化有时候反应会比较慢,请耐心等待。初始化成功后会生成一个随机密码
使用以下命令查看生成的密码
grep 'temporary password' /var/log/mysqld.log
启动数据库服务
systemctl start mysqld.service
修改密码
mysql -u root -p
设置新密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
之后再想修改密码时:
mysql> use mysql;
Database changed
mysql> set password for root@'%' = password('新密码');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
设置远程连接
mysql -u root -p
查看user表
mysql> use mysql;
Database changed
设置远程连接
mysql> grant all privileges on *.* to root@'%' identified by "自定义的密码";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)
加入开机自启
systemctl enable mysqld;
出现的异常的情况
运行
mysqld --initialize --user=mysql
出现
mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
安装 numactl-libs-2.0.12-5.el7.x86_64.rpm
rpm -ivh numactl-libs-2.0.12-5.el7.x86_64.rpm
再次执行初始化时
[root@3e94ecf9f375 ansible]# mysqld --initialize --user=mysql
2020-09-01T06:22:54.028191Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaul
ts_for_timestamp server option (see documentation for more details).
2020-09-01T06:22:54.031958Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2020-09-01T06:22:54.036136Z 0 [ERROR] Aborting
原因: 已经初始化,但没有成功,想再次初始化报错。 解决: 数据文件目录有其他的文件,这个data目录应该是一个空目录; 查看/etc/my.cnf文件里面的data目录是哪个,把里面的文件删除。
密码无法重置
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
操作步骤
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qq123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
mysql> set validate_password_length=6;
ERROR 1229 (HY000): Variable 'validate_password_length' is a GLOBAL variable and should be set with SET GLOBAL
mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file | |
| validate_password_length | 6 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
update user set host='%' where user='root';
修改好host之后,我们要让它立即生效,还要执行这样一个语句:flush privileges;
操作完成之后,再用root远程访问就可以了。
=======================我是分隔线啦=======================
如果要认密码永不过期的话,可以使用以下方法:
1、修改密码
set passwordpassword=password('123456');
2、设定密码的有效期为0,即永不过期;
set global default_password_lifetime=0;
3、在配置文件中添加配置;[如果不做上面修改,可以直接修改配置文件,但是改完后要重启服务才生效]
[mysqld]
default_password_lifetime=0