安装

Debain 或 Ubuntu

参考地址 https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/

1.使用cd命令跳转到对应的文件夹,用来存储下载的mysql安装包
2.下载deb安装包
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-server_8.0.12-1ubuntu18.04_amd64.deb
3.安装
dpkg -i mysql-server_8.0.12-1ubuntu18.04_amd64.deb
4.更新apt
apt update
5.安装mysql
apt install mysql-server

Red Hat 或 Centos

参考地址 https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

1.下载
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
2.安装rpm
rpm -Uvh mysql80-community-release-el7-1.noarch.rpm
3.安装mysql
yum install mysql-community-server
4.启动Mysql
service mysqld start
5.查看密码
grep 'temporary password' /var/log/mysqld.log
6.登陆
mysql -uroot -p
7.修改密码 密码必须是强密码(大小写字母加数字加特殊符号)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
8.刷新权限
flush privileges;

这样就安装完成了

开启远程连接

设置指定用户的localhost的值为%  %代表允许任意地址连接
先登录进入数据库
使用系统数据库
use mysql;
查询用户
select user,host from user;
更新root用户的host
update user set host = '%' where user = 'root';
刷新权限
flush privileges;

修改配置文件 /etc/my.conf
在配置文件中添加以下选项
[mysqld]
skip-name-resolve
使用navicat连接mysql8.0以上版本实时  会出现密码加密方式不正确的问题
原因是某些navicat 与 mysql连接时 使用的加密方式和解密方式不同而导致的  因为mysql8.0之后的版本默认登陆时的加密方式改变了

解决办法

在配置文件中修改加密方式 并用指定加密方式重新设置该用户密码
[mysqld]
default_authentication_plugin=caching_sha2_password
改为
[mysqld]
default_authentication_plugin=mysql_native_password
重新设置用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

binlog配置 mysql8默认开启binglog

关闭binglog 否则数据库访问过大会导致 硬盘已满的情况
[mysqld]
skip-log-bin

binlog定期清理

在sql中执行  5天清理一次
set global expire_logs_days = 5;
配置文件中
expire_logs_days = 5

sql_mode设置

不同版本的sql_mode值不同
mysql5.7 版本
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
mysql8.0 以上版本
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

最大连接数

查询最大连接数
show variables like '%max_connections%'; 
设置最大连接数
set GLOBAL max_connections = 200;
当前连接状况
show status like 'Threads%';

Threads_cached 0 ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected 152 ##打开的连接数 Threads_created 550 ##表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器 Threads_running 1 ##激活的连接数,这个数值一般远低于connected数值,准确的来说,Threads_running是代表当前并发数

问题总结

mysql5.8版本移除sql_mode中的NO_AUTO_CREATE_USER  如果设置这个 则无法正常使用

mysql 常用命令

刷新权限
flush privileges;

linux mysql相关命令

启动mysql服务
service mysqld start
重启mysql服务
service mysqld restart
关闭mysql服务
service mysqld stop