这里centos为阿里云默认镜像。
一、卸载历史历史版本
1、检查是否有服务启动
# service mysqld status
2、停止mysql服务
# service mysqld stop
3、查看mysql历史安装组件
# rpm -qa|grep mysql
mysql-libs-5.1.71-1.el6.x86_64
4、卸载组件
# rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
二、安装MYSQL8
因为CentOS 7默认安装的数据库是Mariadb,所以使用YUM命令是无法安装MySQL的,只会更新Mariadb。使用rpm来进行安装。可以在mysql的repo源仓库右键复制指定版本的数据库。
1、进入usr目录
#cd cd /usr/local/
2、安装SQL
# wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm
运行后本目录后下载mysql80-community-release-el7-1.noarch.rpm包
# sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm
安装完成后出现以下两文件:
使用yum安装mysql服务,这里--nogpgcheck指禁用GPG检查,不禁用可能因密钥文件不对导致无法安装。
# yum -y install mysql-community-server --nogpgcheck
显示Complete说明安装成功。
3、接下来修改mysql配置文件,根据自身需要修改端口等配置,示例见文底。(mysql8在linux下如果要修改大小写敏感需要在初次启动前修改:lower_case_table_names = 1 )
后面密码修改为123456会提示密码太弱[非要改为123456,先要修改mysql8的密码规则],这里最好先将配置文件改了再来改密码,配置文件里面的密码规则影响navicat的登陆
# vi /etc/my.conf
4、启动mysql以及初始化密码
# ps -ef|grep mysql //查看是否已经启动
# systemctl start mysqld.service //启动服务
# mysqld --initialize //初始化Mysql
# grep 'temorary password' /var/log/mysqld.log //输出mysqld密码到文件
密码如下:
5、修改初始密码以及远程登陆
# mysql -uroot -P3369 -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
出现如下错误需要降低policy等级:
执行:set global validate_password.policy=0; 再执行修改密码
6、授权远程登陆
use mysql;
update user set host = '%' where user = 'root';
7、刷新
FLUSH PRIVILEGES;
8、开启防火墙
#firewall-cmd --permanent --add-port=3306/tcp //开启端口
#firewall-cmd --reload //刷新应用
centOS7 防火墙相关命令
一、开放端口用 --add-port
firewall-cmd --permanent --add-port=8080/tcp
二、移除端口用 --remove-port
firewall-cmd --permanent --remove-port=8080/tcp
三、刷新规则用 --reload
firewall-cmd --reload
四、查询端口是否开放用 --query-port
firewall-cmd --query-port=8080/tcp
五、防火墙其它管理操作命令
命令功能 命令
启动 firewalld.service服务 service firewalld start
停止firewalld.service服务 service firewalld stop
重启firewalld.service服务 service firewalld restart
查看firewall的状态 firewall-cmd --state
查看防火墙已有规则列表 firewall-cmd --list-all
查看firewall服务状态 systemctl status firewalld
六、备注
firwall-cmd:是Centos Linux 7.x提供的操作firewall的一个工具
--permanent:表示设置为持久有效,记忆技巧:per 自始至终 + man 逗留 + ent 具有…性质的 → 始终逗留的 → 持久的
防火墙文件地址:
1、/etc/firewalld/zones/public.xml 配置的在此文件中
2、/usr/lib/firewalld/zones 这里的防火墙配置文件一般不改变,应该是系统备份。
端口较多的情况直接在文件里配置,然后重启防火墙服务就好。
再说my.cnf配置,在启动好后,/etc/my.cnf已经自动生成好了。后续争对mysql的配置优化肯定少不了,
比如默认端口3306 就看个人喜好改一个,避免恶意攻击。
比如,如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
port=3369
character-set-server=utf8
max_connect_errors=10
max_connections=200
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8
[client]
port=3369
default-character-set=utf8