官网下载地址 http://dev.mysql.com/downloads/mysql/
CentOS7默认安装mariadb
先执行查询:rpm -qa | grep mariadb
如果存在mariadb执行删除:rpm -e --nodeps mariadb-libs
查看已安装mysql的版本:mysqladmin -V
卸载:
# 停掉mysql服务
service mysqld stop
# 或者
systemctl stop mysqld
# 查看已安装的mysql安装包,参照下面的截图
rpm -qa|grep mysql
# 使用如下指令将搜索到的mysql安装包全部卸载
rpm -e --nodeps mysql-community-common-5.7.38-1.el7.x86_64
rpm -e --nodeps mysql-community-libs-5.7.38-1.el7.x86_64
rpm -e --nodeps mysql-community-client-5.7.38-1.el7.x86_64
rpm -e --nodeps mysql-community-server-5.7.38-1.el7.x86_64
# 删除配置文件
rm -vf /etc/my.cnf.rpmsave
# 删除日志文件
rm -vf /var/log/mysqld.log
# 查看并删除其他残留文件
find / -name mysql
# 依次删除
rm -rf 对应路径
效果如下:
删除残留文件,执行 find / -name mysql
将mysql8安装包上传到/opt目录下:
# mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以/tmp需要较大的权限
chmod -R 777 /tmp
# 切换到/opt目录,并安装:
rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
# 查看安装的版本
mysqladmin --version
# 初始化mysql:使用mysql系统用户以安全模式为mysql的root用户生成临时密码,第一次登录后要立马修改。
mysqld --initialize --user=mysql
# 查看临时密码
cat /var/log/mysqld.log
# 启动mysql:
systemctl start mysqld.service
#使用初始密码登录
mysql -uroot -p回车,然后输入化密码
#修改root用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
效果图:
# 启动:
systemctl start mysqld.service
# 关闭:
systemctl stop mysqld.service
# 重启:
systemctl restart mysqld.service
# 查看状态:
systemctl status mysqld.service
注意:一定要先初始化命令再启动服务
原因:
1、在MySQL8.0中,如果第一次启动服务器分别执行了数据初始化命令mysqld --initialize --user=mysql
和服务启动命令systemctl start mysqld
,那么服务器默认没有密码校验策略,此时可以修改为任意密码。
2、如果第一次启动服务器直接执行了systemctl start mysqld
命令,那么数据会被自动初始化,那么服务器默认具有密码校验策略,此时密码长度必须最少8位,至少有一个数字,一个大写字母,一个小写字母,一个特殊字符。
#查看mysql的默认编码,发现默认编码是utf8,无需修改
show variables like '%char%';
#修改编码,需要修改mysql配置文件:
vi /etc/my.cnf
#在mysqld下添加一行编码配置:
character_set_server=utf8
#保存并退出,重启mysql服务:
service mysql restart
默认情况下,mysql不允许远程连接。只允许localhost连接
1.确认虚拟机防火墙已关闭(关闭了就不用看了)
# 关闭防火墙或者开放端口号:
systemctl start firewalld.service
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl enable firewalld.service
systemctl disable firewalld.service
-- 查看开放的端口号
firewall-cmd --list-all
-- 设置开放的端口号
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=3306/tcp --permanent
-- 重启防火墙
firewall-cmd --reload
2、解决远程访问问题,修改host为通配符%,刷新权限
#执行
select user,host,plugin,authentication_string,select_priv,insert_priv from mysql.user;
#修改Host为通配符%
update mysql.user set host = '%' where user ='root';
# 刷新权限
flush privileges;
出现新问题,mysql5.7之前密码加密使用的插件是mysql_native_password,mysql8修改为caching_sha2_password
解决方法:
一种是升级SQLyog和Navicat(新版SQLyog和Navicat不会出现此问题),另一种是把MySQL用户登录密码加密规则还原成mysql_native_password。
Linux下 mysql -u root -p 登录你的 mysql 数据库,然后 执行SQL:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';#自己设置的密码
#刷新权限
flush privileges;
完美,哈哈!当然还有其他的配置
# 查看参数表中的profiling(性能分析工具)是否开启
show variables like '%profiling%';
# 本次会话开启profiling
set profiling=1;
②MySQL存储引擎
# 查看mysql提供的所有存储引擎
show engines;
# 查看当前默认的存储引擎
show variables like '%storage_engine%';
# 或者
SELECT @@default_storage_engine;
# 修改存储引擎
SET DEFAULT_STORAGE_ENGINE=MyISAM;
#或者修改 my.cnf 文件:
default-storage-engine=MyISAM
需要重启mysql服务才能生效!
ok,赞赞赞