cat /etc/redhat-release
cat /proc/version
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@localhost ~]# cat /proc/version
Linux version 3.10.0-957.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
CentOS上执行,查看OS版本
[root@localhost ~]# rpm -qa | grep glibc
glibc-common-2.17-260.el7.x86_64
glibc-2.17-260.el7.x86_64
从官网下载MySQL
因为教材使用的是8.0.31版本的MySQL,所以这里附上8.0.31版本MySQL的下载链接。
vi /etc/selinux/config
修改后:
SELINUX=disabled
保存退出后执行
setenforce 0
查询 rpm -qa | grep mariadb
删除 rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
解压 tar -xvf mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
cd /usr/local/
命名 mv mysql-8.0.34-linux-glibc2.12-x86_64 ./mysql
cd mysql
mkdir data log
touch ./log/mysql.log
groupadd mysql
useradd -g mysql mysql
chown -R mysql.mysql /usr/local/mysql
vi /etc/my.cnf
输入i 进入编辑模式后,将下方内容粘贴到文件中输入:wq退出并保存
[client]
port = 3306
#根据实际情况调整mysql.sock配置
socket = /tmp/mysql.sock
[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1
#服务端口号 默认3306
port = 3306
#mysql安装根目录
basedir = /usr/local/mysql
#mysql数据文件所在位置
datadir = /usr/local/mysql/data
#pid
pid-file = /usr/local/mysql/mysql.pid
#设置socke文件所在目录
socket = /tmp/mysql.sock
#设置临时目录
tmpdir = /tmp
# 用户
user = mysql
# 允许访问的IP网段
bind-address = 0.0.0.0
#错误日志
log_error=/usr/local/mysql/log/mysql.log
#设置认证插件
default_authentication_plugin=mysql_native_password
#设置sqlmode(根据需求自定义)
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 跳过密码登录
#skip-grant-tables
#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
skip-external-locking
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
#最大连接数
max_connections = 400
#最大错误连接数
max_connect_errors = 1000
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 134217728
max_heap_table_size = 134217728
#mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days = 5
进入mysql文件夹的bin目录下,初始化mysql --如有路径变动,注意修改对应路径
cd /usr/local/mysql/bin
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize
配置文件默认 /etc/my.cnf
# cd ..
# cd support-files/
# ./mysql.server start
# cp mysql.server /etc/init.d/mysqld
重启MySQL服务:
# service mysqld restart
# cd ..
# cd bin/
# ./mysql -u root -p
修改密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'centos_data';
mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;
指定防火墙3306开放
firewall-cmd --zone=public --add-port=3306/tcp --permanent
设置完需要重载规则
firewall-cmd --reload
远程连接成功
mysql 函数不能用,配置 (注意:如果后台项目程序已经启动,运行下面配置后,则需要重启项目)
1.查询
select @@global.sql_mode
查询结果:
'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
2.重新设置,将 ONLY_FULL_GROUP_BY 去掉
set @@global.sql_mode= 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
PS:设置好后,运行sql需要关闭当前链接,重新打开运行即可。