通过yum安装mysql8
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依次选择


下载页点击 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即可
