https://dev.mysql.com/downloads/
https://dev.mysql.com/downloads/mysql/
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar
mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar
卸载:
卸载前关闭MySQL服务
service mysql status
service mysql stop
检查service mysql status
rpm -qa | grep -i mysql
rpm -ev删除上面的结果
最好实用find命令查看MySQL数据库相关的文件,方便后面彻底删除MySQL。
find / -name mysql
rm -rf删除对应的文件
检查find / -name mysql
如果有必要,删除mysql用户以及mysql用户组
more /etc/passwd | grep mysql
more /etc/shadow | grep mysql
more /etc/group | grep mysql
userdel mysql
groupdel mysql
确认MySQL是否卸载删除
rpm -qa | grep -i mysql
安装:tar -xvf mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar
common–>libs–>client–>server的顺序。若不按照此顺序,也会有一定“依赖”关系的提醒。
rpm -ivh mysql-community-common*
rpm -ivh mysql-community-libs*这一步会报mariadb-libs相关的错
运行yum remove mysql-libs解决这一错误
重试rpm -ivh mysql-community-libs*
rpm -ivh mysql-community-client*
rpm -ivh mysql-community-server*
四、启动数据库
# systemctl start mysqld 或者 Service mysql start
查看状态:
# systemctl status mysqld
五、登录
1)使用my.cnf文件中自动生成一个密码
cat /var/log/mysqld.log | grep password
密码:IVv;G72=G#y_
2)使用root登录
mysql -u root -p 输入上面的密码
3)修改密码
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]';
mysql5.7.6版本后 废弃user表中 password字段 和 password()方法,所以旧方法重置密码对mysql8.0版本是行不通的,共勉
老版本set password for root@localhost = password(‘[email protected]’);
use mysql
select host, user, authentication_string, plugin from user;
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]' PASSWORD EXPIRE NEVER;
将 MySQL 用户登录的加密规则修改为 mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[email protected]';
FLUSH PRIVILEGES;
其中[email protected]为之前root账号设置的密码
我们看host和user两列,host和user中root对应的值为localhost,即root用户的访问权限为localhost,想把该用户的访问权限设置可远程连接,我们只需要把localhost更改为通配的%就可以了。若是的权限操作语句没有走通,也可以直接使用update语句来更改吧。
update user set host = "%" where user = "root";
FLUSH PRIVILEGES;
开启3306端口:
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
重启防火墙:
service iptables restart
-- 查看数据库
show databases;
-- 模糊查询包含y的数据库
show databases like '%y%';
-- 查看表
show tables;
--模糊查询包含user的表
show tables like '%user%';
-- 查看列, 查看user表信息
desc user;
-- 查看username用户被赋予的权限
show grants for username;
实现免密登录
vim /etc/my.cnf
[mysqld]
#跳过密码验证
skip-grant-tables
user=root
重启systemctl restart mysqld
输入mysql
MySQL8默认的认证插件是caching_sha2_password,很多客户端都不支持,可将默认的认证插件修改为mysql_native_password,在配置文件my.cnf中配置default_authentication_plugin=mysql_native_password。
查看/var/log/mysqld.log的日志
删掉/var/lib/下的mysql文件夹解决上面的错
find / -name mysqld
/usr/sbin/mysqld --initialize-insecure
初始化参数我使用了--initialize-insecure,这样不会设置初始化root密码,如果是 --initialize的话,会随机生成一个密码:
推荐使用/usr/sbin/mysqld --initialize
创建data文件夹以及对应的文件