1、MySQL的安装
1、删除mariadb数据库
yum remove mariadb-libs.x86_64
CentOS7默认安装mariadb数据库,所以要先删除
2、下载mysql源
进入mysql下载网址:https://dev.mysql.com/downloads/repo/yum/
进入tmp目录,在wget指令后粘贴下载链接,空格开始下载
cd /tmp/ wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
3、安装源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
查询一下源是否安装成功
yum search mysql
可以看到 已经安装成功
执行安装指令
yum install mysql-community-server
查看mysql服务是否启动
ps -ef | grep mysql
重启mysql服务
service mysqld restart
停止和开启mysql服务
service mysqld stop
service mysqld start
4、修改密码
查看默认密码
cat /var/log/mysqld.log | grep password
复制默认密码登录mysql
登录后mysql会提示你使用默认密码是不安全的,需要修改密码
注意:不同版本的mysql修改密码的语法可能有差异,这里我用的是mysql8.0。
SET PASSWORD = '12345';
还是会有问题,提示密码不符合当前策略要求(应该就是过于简单),所以需要修改mysql的策略
mysql5.7版本及以下
set validate_password_policy=0;
set validate_password_length=6;
msyql8.0版本
set global validate_password.policy=0
set global validate_password.length=6
如果你只想某个用户使用简单的密码策略,则可以把密码策略安全级别设置为最低,创建用户后再恢复过来。
2、基本操作
1.、远程连接
设想一种情况,你想在windows主机中连接云服务器或是链接另外一台主机上的数据库。
当你打开数据库管理工具(我用的是sqlyog),输出远程IP和数据库账号密码,连接时,将会报错,提示不能连接,因为数据库没有开启远程连接。
那如何开启呢?
1、进入远程数据库
2、修改权限信息
show databases;
use mysql;
show tables;
select Host,User from user \G;
update user set Host="%" where Host="localhost" and User="root";
select Host,User from user \G;
3、刷新权限信息或重启服务
将root账号的登录IP修改成任意IP都可登录后,还是不能通过远程连接,因为此时权限还未更新,需要刷新权限。
可以通过刷新权限语句或重启服务来实现。
刷新权限语句:
flush privileges;
重启服务:
service mysqld restart
4、关闭防火墙
当做完上述操作后,还是不能进行远程连接,因为防火墙是开启的。防火墙开启时会将许多端口屏蔽掉,讲防火墙关闭即可。
查看防火墙是否开启:
ps -ef | grep firewalld
关闭防火墙:
service firewalld stop
5、还是出现错误
如果出现client does not support authentication protocol requested by server;的错误
出现上述问题的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password 把mysql用户登录密码加密规则还原成mysql_native_password
解决办法:
use mysql
set global validate_password.policy=0
set global validate_password.length=6;
alter user 'root'@'%' identified with mysql_native_password by 'lhb912168';
最后一行'用户名'@'%'和'用户名'@'localhost'的区别,一个是任意连接,一个是本地连接。lhb912168是我的root账号密码,这也同样适用于其它用户。
2、开启genelog
为什么要开启genelog?
genelog会记录所有操作数据库的sql语句
步骤:
进入数据库
设置geneLog日志文件存放路径
set global general_log_file="/tmp/general.log";
开启genelog
set global general_log=on;
3、用户管理
创建用户:
set global validate_password.policy=0
set global validate_password.length=6;
create user 'user'@'%' identified by '123456';
赋予用户所有权限:
grant all privileges on *.* to 'user'@'%' identified by '123456' with grant option;
*.* 表示所有库的所有表。‘user'@'%'表示所有主机登录的user账号。
赋予单独权限:
grant select,insert,update,delete on *.* to 'user'@'%' identified by '123456' with grant option;
回收权限:
revoke all privileges on *.* from user;
刷新权限语句:
每次进行权限修改操作,需要刷新权限
flush privileges;
4、忘记root密码
1)跳过权限表的验证
vim /etc/my.cnf
在配置文件的最后一行加上skip-grant-tables
这是登录mysql就可以不用输入密码了。
2)修改密码
现在不能使用安装mysql后修改默认root密码方法来更新密码,需要修改权限表
update user set authentication_string="12345" where user = 'root';
flush privileges;
3)复原权限表
将my.cnf中在最后一行添加的语句删除。