通过yum安装mysql8

  1. wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

下载到指定位置后,就可以执行安装了

yum -y install mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server

安装完成之后启动服务和查看状态

systemctl start mysqld.service
systemctl status mysqld.service
systemctl restart mysqld.service

配置

查看初始密码

grep "password" /var/log/mysqld.log

使用初始密码登录然后就要设置密码

设置密码规范,可以让密码设置的比较简单

set global validate_password_policy=0;
set global validate_password_length=1;

设置密码

先设置本地连接的密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

查看密码规范

SHOW VARIABLES LIKE 'validate_password%';

给root用户连接权限,但是mysql8不能这样处理

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码';

要这样做

如果这期间有报错,就按照下面改配置文件

use mysql;
-- 修改连接权限
update user set host='%' where user ='root';
-- 更改加密方式
update user set plugin='mysql_native_password' where user ='root';
-- 改远程连接的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
-- 授权远程连接
grant all on *.* to 'root'@'%'; 
-- 刷新权限
flush privileges;

或者创建一个新用户admin用来连接

-- 创建用户:
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
-- 允许远程连接:
GRANT ALL ON *.* TO 'admin'@'%';
-- 修改密码策略
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

设置utf-8编码

yum安装之后要改配置文件

vim /etc/my.cnf,添加以下内容

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
default-authentication-plugin=mysql_native_password
lower_case_table_names=1
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

如果忘记密码则需要vim /etc/my.cnf增加以下内容,然后重启服务,这样配置后登录mysql不需要密码

[mysqld]
skip-grant-tables

但是这样做很多东西修改不了,需要删除旧密码,然后删除上面的配合再重启

这样登录mysql仍然不需要密码,但可以进入mysql后修改密码了

mysql> use mysql;
mysql> update user set authentication_string = '' where user = 'root';

压缩包形式安装mysql5.7

下载5.7.32版本,官网下载地址 MySQL :: Download MySQL Community Server

如果是centos依次选择

2.jpg

3.jpg

下载页点击 MySQL-5.7下载链接

通过secureFX上传压缩包到服务器

习惯在/usr/local下安装软件

mkdir /usr/local/mysql
cd /usr/local/mysql
# 解压
tar -zxvf mysql-5.7.32-el7-x86_64.tar.gz 
# 目录重命名 不然目录名这么长容易出错
mv mysql-5.7.32-el7-x86_64 ./mysql
# 创建mysql组
groupadd mysql
# 创建用户mysql并加入mysql用户组
useradd -g mysql mysql
# 赋予mysql用户相应权限
chown -R mysql /usr/local/mysql/mysql

vim /etc/my.cnf修改mysql配置

[mysqld]
datadir=/usr/local/mysql/mysql/data/
basedir=/usr/local/mysql/mysql/
pid-file=/usr/local/mysql/mysql/data/mysql.pid
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 表名不区分大小写
lower_case_table_names=1
#允许最大查收大小
max_allowed_packet=16M
socket=/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

安装命令

./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/mysql/ --datadir=/usr/local/mysql/mysql/data/
./bin/mysqld --initial --user=mysql --basedir=/usr/local/mysql/mysql/ --datadir=/usr/local/mysql/mysql/data/

启动

cp /usr/local/mysql/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
service mysqld start

如果报错,就按照报错信息依次创建目录和文件

mkdir /var/log/mariadb/
touch /var/log/mariadb/mariadb.log
chown -R mysql /var/log/mariadb/

然后在启动 service mysqld start,这时就会成功

环境变量配置

vim /etc/profile

最后一行加上

export PATH=$PATH:/usr/local/mysql/mysql/bin

修改完后source /etc/profile

mysql配置

查看mysql初始密码

cat /root/.mysql_secret

登录之后先改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxx';
use mysql;
# 授权远程连接
update user set host='%' where user ='root';
grant all on *.* to 'root'@'%'; 
# 刷新权限
flush privileges;

如果有保存就先刷新权限再执行一些命令

开发端口 供外部连接

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

关于创建数据库时的编码

utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。

当然,为了节省空间,一般情况下使用utf8也就够了。

mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了,比如emoji,生僻字。

this is incompatible with sql_mode=only_full_group_by错误解决方案

如果要兼容5.6语法老项目
在my.cnf配置文件中加上

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后重启mysql即可