一、mysql8的与众不同。

MySQL从5.7一跃直接到8.0,这其中的缘由,咱就不关心那么多了,有兴趣的朋友自行百度,本次的版本更新,在功能上主要有以下6点:

  账户与安全

  优化器索引

  通用表表达式

  窗口函数

  InnoDB 增强

  JSON 增强

重点只对账户与安全进行详细阐述,其他特性请看参考博客。

一、账户与安全

1.用户的创建与授权

  在MySQL5.7的版本:

  > grant all privileges on *.* to '用户名'@'主机' identified by '密码';

  在MySQL8.0需要分开执行:

  >create user '用户名'@'主机' identified by '密码';

  >grant all privileges on *.* to '用户名'@'主机';

  用以前的一条命令在8.0里面创建用户,会出现sql语法错误

2.认证插件更新

  MySQL5.7默认身份插件是mysql_native_password

  MySQL8.0默认的身份插件是caching_sha2_password
  查看身份认证插件命令:show variables like 'default_authentication_plugin%';
  身份认证插件可以通过以下2中方式改变:

1)系统变量default_authentication_plugin去改变,在my.ini文件的[mysqld]下面设置default_authentication_plugin=mysql_native_password即可
  2)如果希望只是某一个用户通过mysql_native_password的方式认证,可以修改数据库mysql下面的user表的字段,执行以下命令:  >alter user '用户名'@'主机' identified with mysql_native_password by '密码';

3.密码管理

  MySQL8.0的密码管理策略有3个变量

  password_history 修改密码不允许与最近几次使用过的密码重复,默认是0,即不限制

  password_reuse_interval 修改密码不允许与最近多少天的使用过的密码重复,默认是0,即不限制
  password_require_current 修改密码是否需要提供当前的登录密码,默认是OFF,即不需要;如果需要,则设置成ON

  查询当前MySQL密码管理策略相关变量,使用以下命令:

  >show variables like 'password%';

  1)设置全局的密码管理策略,在my.ini配置文件中,设置以上3个变量的值这种设置方式,需要重启mysql服务器;某些生产环境不允许重启,MySQL8.0提供了关键字persist,持久化,执行以下命令:

  >set persist password_history=6;

  这条命令会在数据目录下生成新的配置文件(/var/lib/mysql/mysqld-auto.cnf),下次服务器重启的时候除了读取全局配置文件,还会读取这个配置文件,这条配置就会被读入从而达到持久化的目的
  2)针对某一个用户单独设置密码管理策略

  >alter user '用户名'@'主机' password history 5;

  这样,这个用户的password_history 就被设置成了5,查看一下:

  >select user,host,authentication_string,Password_reuse_history from user; 

  查看某一张的字段的所有字段,使用以下命令:

  >desc 表名;

4.角色管理 角色:一组权限的集合 一组权限赋予某个角色,再把某个角色赋予某个用户,那用户就拥有角色对应的权限

1)创建一个角色

>create role '角色1';

2)为这个角色赋予相应权限

>grant insert,update on *.* to '角色1';

3)创建一个用户

>create user '用户1' identified by '用户1的密码';

4)为这个用户赋予角色的权限

>grant '角色1' on *.* to '用户1'; 执行完上面4步,用户1就拥有了插入与更新的权限

5)再创建1个用户

>create user '用户2' identified by '用户2的密码';

6)为这个用户赋予同样的角色

>grant '角色1' on *.* to '用户2';

执行完上面2步,用户2也用了角色1的权限,即插入与更新 查看用户权限,执行以下命令:

>show grants for '用户名';

7)启用角色,设置了角色,如果不启用,用户登录的时候,依旧没有该角色的权限

>set default role '角色名' to '用户名';

8)如果一个用户有多个角色,使用以下命令

>set default role all to '用户名';

MySQL中与用户角色相关的表:mysql.default_roles、mysql.role_edges,有兴趣的朋友可以进去查看下。

9)撤销权限 >revoke insert,update on *.* from '角色名';

二、mysql8的安装与初始化。

1、yum安装。

使用rpm安装yum仓库:

# wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm
# sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm

安装完成后会在 /etc/yum.repos.d文件夹里面获得两个文件:mysql-community.repo && mysql-community-source.repo。

其中mysql的repo文件如下:

# Enable to use MySQL 8.0 [mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

yum安装mysql

# sudo yum install mysql-server

设置开机自启并启动mysql服务。

首次登陆密码在/var/log/mysqld.log中寻找:

# grep 'temporary password' /var/log/mysqld.log

2、源码安装,比较复杂,详查官方文档,源码安装比二进制只多了编译的步骤,编译过后,安装步骤跟二进制安装一样。

3、二进制安装:需要先下载二进制tar包。

shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> tar xvf /path/to/mysql-VERSION-OS.tar.xz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

注意:mysql-files目录的作用在于,将数据导入导出的操作限制到此特定目录。相关命令关键字:load(导入)、slecte * from 表名 into outfile ......

重点:MySQL默认配置文件顺序:
/etc/my.cnf-----/etc/mysql/my.cnf----/usr/local/mysql/my.cnf的顺序读取配置文件的,当有多个配置文件时,mysql会以读取到的最后一个配置文件中的参数为准。
手工指定my.cnf位置的时候必须跟在mysqld后面第一个参数

4、初始化:yum安装不需要初始化,因为systemd启动时会默认先进行初始化再启动实例,二进制和源码安装需要初始化。

5、通过yum+自定义初始化,本人比较喜欢的一种安装方式,技能保证速度,还能自定义参数,省去自己写systemd:

##只要是在新机器上部署服务,第一步先关闭selinux和firewalld

1)、yum install 或者从http://repo.mysql.com/yum/mysql-8.0-community/el/8/x86_64/下载想要的版本。

2)、修改配置文件,将其放在dadadir同级目录。
数据目录:
datadir
basedir:yum安装情况下不用修改,默认是/usr。因为涉及到/usr/share/msql的一些公共可用的文件。

服务id:
server-id = 7657

端口和socket配置:
port=3309
mysqlx_port=13309
mysqlx_socket=/data/mysql/3309/mysqlx.sock
socket=/data/mysql/3309/mysql.sock
pid-file=/data/mysql/3309/mysqld.pid

开启半同步复制:

开启慢查询:

3)、初始化:
mysqld --defaults-file=/data/mysql/3309/my.cnf  --initialize-insecure

4)、systemd启动:
(1)systemd管理的服务,与服务相关的目录和文件的权限一定要与启动用户对应,否则无法启动。
(2)可以先命令行启动,启动成功后,再转为systemd管理。因为有些服务有依赖,systemd直接启动失败后不好调试。

#mysqld --defaults-file=/data/mysql/3309/my.cnf -D  ,建议使用system启动,此方式可以作为临时使用。

5)、mysql -uroot -P port进入数据库,修改root用户密码,并删除root@'localhost'的登录方式。
select user,host,authentication_string,plugin from mysql.user
create user root@'%' identified by '1qaz2wsx'
grant all privileges on *.* to root@'%' WITH GRANT OPTION
drop user root@'localhost'

6)回收权限:
revoke select on `数据库`.`表` from '用户名'@'host';
退出数据库并进行登录验证。

三、配置文件解析。

2、修改配置文件,将其放在dadadir同级目录。
数据目录:
datadir
basedir:yum安装情况下不用修改,默认是/usr。因为涉及到/usr/share/msql的一些公共可用的文件。

服务id:
server-id = 7657

端口和socket配置:
port=3309
mysqlx_port=13309
mysqlx_socket=/data/mysql/3309/mysqlx.sock
socket=/data/mysql/3309/mysql.sock
pid-file=/data/mysql/3309/mysqld.pid

开启gtid_mode

开启半同步复制:

开启慢查询:

企业级配置如下:(mysql8)

[mysql]
prompt = [\\u@\\p][\\d]>\\_
no-auto-rehash[mysqld_safe]
malloc-lib=tcmalloc[mysqldump]
single-transaction[mysqld]
# basic settings #
user = mysql
autocommit = 1
server-id = 7657
character_set_server=utf8mb4
datadir=/data/mysql/3309/data
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
max_allowed_packet = 64M
event_scheduler = 1
port=3309
mysqlx_port=13309
mysqlx_socket=/data/mysql/3309/mysqlx.sock
socket=/data/mysql/3309/mysql.sock
pid-file=/data/mysql/3309/mysqld.pid# connection #
interactive_timeout = 1800
wait_timeout = 1800
lock_wait_timeout = 1800
skip_name_resolve = 1
max_connections = 4096
max_user_connections = 1024
max_connect_errors = 1000000# table cache performance settings
table_open_cache = 4096
table_definition_cache = 4096
table_open_cache_instances = 64# session memory settings #
#read_buffer_size = 16M
#read_rnd_buffer_size = 32M
#sort_buffer_size = 32M
#tmp_table_size = 64M
#join_buffer_size = 128M
#thread_cache_size = 64# log settings #
log_error = error.log
log_bin = binlog
log_error_verbosity = 2
general_log_file = general.log
slow_query_log = 1
slow_query_log_file = slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
long_query_time = 2
lower_case_table_names=1
min_examined_row_limit = 100
log-bin-trust-function-creators = 1
log-slave-updates = 1# innodb settings #
innodb_page_size = 16384
innodb_flush_log_at_trx_commit = 1
innodb_buffer_pool_size = 2g
innodb_buffer_pool_instances = 1
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 4096
innodb_lock_wait_timeout = 5
innodb_io_capacity = 10000
innodb_io_capacity_max = 20000
innodb_flush_method = O_DIRECT
innodb_flush_neighbors = 0
innodb_log_file_size = 1G
innodb_log_files_in_group = 2
innodb_log_buffer_size = 64M
innodb_purge_threads = 4
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 128M
innodb_write_io_threads = 16
innodb_read_io_threads = 16
innodb_file_per_table = 1
innodb_stats_persistent_sample_pages = 64
innodb_autoinc_lock_mode = 2
innodb_online_alter_log_max_size=1G
innodb_open_files=4096# replication settings #
master_info_repository = TABLE
relay_log_info_repository = TABLE
sync_binlog = 1
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
binlog_format = ROW
binlog_rows_query_log_events = 1
relay_log = relay.log
relay_log_recovery = 1
slave_skip_errors = ddl_exist_errors
#slave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN'# replication settings mysql8.0 #
binlog_transaction_dependency_tracking = WRITESET
transaction_write_set_extraction = XXHASH64
slave-parallel-type = LOGICAL_CLOCK
slave-parallel-workers = 16
slave_preserve_commit_order = 1
slave_transaction_retries = 128
binlog_gtid_simple_recovery = 1
log_timestamps = system# semi sync replication settings #
plugin-load = "semisync_master.so;semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_master_timeout = 3000
loose_rpl_semi_sync_slave_enabled = 1# password plugin #
default_authentication_plugin = mysql_native_password# perforamnce_schema settings
performance-schema-instrument='memory/%=COUNTED'
performance_schema_digests_size = 40000
performance_schema_max_table_instances = 40000
performance_schema_max_sql_text_length = 4096
performance_schema_max_digest_length = 4096[mysqld-5.7]
# new innodb settings #
#loose_innodb_numa_interleave = 1
#innodb_buffer_pool_dump_pct = 40
#innodb_page_cleaners = 16
#innodb_undo_log_truncate = 1
#innodb_max_undo_log_size = 2G
#innodb_purge_rseg_truncate_frequency = 128

四、备份与恢复。

1、mysqldump

2、xtrabackup

3、binlog2sql:根据binlog日志生成回滚语句。

五、集群。

1、MHA

2、MMM

3、官方NDB集群

六、优化与日常维护。

1、表空间的释放:optimize 和 truncate

七、可视化工具和审计工具:

1、navicat

2、yearning,github地址:https://github.com/cookieY/Yearning

参考文章:

1、mysql8新特性:

https://www.cnblogs.com/xyabk/p/10882913.html

https://juejin.im/entry/5b88a725f265da43784bc596

2、mysql安装:

yum安装:

https://www.jianshu.com/p/224a891932d8

https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html

二进制安装:

https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html

初始化:

https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html

mysql8三种安装方式相关推荐

  1. grub安装的 三种安装方式

    1. 引言 grub是什么?最常态的理解,grub是一个bootloader或者是一个bootmanager,通过grub可以引导种类丰富的系统,如linux.freebsd.windows等.但一旦 ...

  2. mysql几种安装方法_mysql的三种安装方式(详细)

    安装MySQL的方式常见的有三种: rpm包形式 通用二进制形式 源码编译 1,rpm包形式 (1) 操作系统发行商提供的 (2) MySQL官方提供的(版本更新,修复了更多常见BUG)www.mys ...

  3. ubuntu安装mysql没反应_Ubuntu安装mysql三种安装方式

    三种安装方式: 1. 从网上安装 sudo apt-get install mysql-server.装完已经自动配置好环境变量,可以直接使用mysql的命令. 注:建议将/etc/apt/sourc ...

  4. vue.js三种安装方式

    Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...

  5. groupadd r mysql_MySQL三种安装方式大揭秘

    此文章主要向大家讲述的是MySQL三种安装方式,及RPM 二进制包与源代码,我们本次安装的相关系统平台为redhat 5,以下就是文章的主要内容的详细描述,望大家在浏览之后会对其有更深的了解. MyS ...

  6. Jenkins --- 三种安装方式

    目前Jenkins是社会上普遍应用比较广泛的持续集成工具,一键构建.解决手工运行程序的问题.我一般是以Jmeter+Ant+Jenkins构建可持续集成.一开始的步骤就是要安装Jenkinn在本地电脑 ...

  7. 安装 Go的三种安装方式

    Go的三种安装方式 Go有多种安装方式,你可以选择自己喜欢的.这里我们介绍三种最常见的安装方式: Go源码安装:这是一种标准的软件安装方式.对于经常使用Unix类系统的用户,尤其对于开发者来说,从源码 ...

  8. KALI Linux三种安装方式之U盘安装

    KALI Linux三种安装方式详解 KALI Linux三种安装方式之U盘安装 仅为个人经验交流,仅供参考 (对于KALI的介绍就不用多说了,既然选择安装说明有了充分的了解了) U盘安装顾名思义就是 ...

  9. GoLang下载与安装-三种安装方式

    文章目录 三种安装方式 一.下载Go 二.安装 1.homebrew (mac用户) 2.安装包 1.如果是windows 用户,请下载go1.18.windows-amd64.msi 2.如果是ma ...

最新文章

  1. Qt + VS 【如何添加图片资源】
  2. linux uvc协议_linux使用UVC采集数据
  3. Python 进阶_模块 amp; 包
  4. 事件抽取与事理图谱的N个问题
  5. multi source replication mysql,Disabling Multi-Source Replication in MySQL 5.7
  6. MySql的存储过程和触发器
  7. B00012 C++算法库的sort()函数
  8. TurboFan-Sea of Nodes概念讲解
  9. ai带来的革命_Covid-19将加速AI医疗保健革命
  10. 孙鑫老师的j2ee教程—j2ee视频教程
  11. idea快速创建serilizableuid
  12. 401.3 您未被授权查看该页 错误原因和解决方案
  13. 软件开发中 前台、中台、后台英文_实战思考(一):如何搭建业务中台?
  14. android 设置iptv vlan tag的命令,IPTV+VLAN设置教程
  15. 二、zookeeper客户端使用和集群特性
  16. nyoj 1237-最大岛屿
  17. 终极解决-office应用商店打不开!!!
  18. PMP项目管理知识体系(全集),建议收藏
  19. Git工作原理_繁星漫天_新浪博客
  20. oracle 的dba users表,oracle DBA 常用表和视图

热门文章

  1. 【Unity性能优化】静态资源优化——Audio优化
  2. 第46周收录128起融资,国内硬件新三板扎堆,大额融资激增,国内资本出海活跃 | 潜在周报
  3. iOS印象笔记添加到Siri捷径,怎么实现的?
  4. Mongo第三个参数的用法
  5. CSS选择器的优先级的相关介绍
  6. 2015新款 MacBook 用心的测评与试用. 最轻薄的Mac上市
  7. 二、LoRaWAN Gateway【LoRaWAN实战项目】
  8. 老挑毛 win7 linux,老挑毛u盘装系统步骤|老挑毛u盘一键装系统
  9. 使用Spring Security Oauth2 和 JWT保护微服务--资源服务器的编写
  10. ZBrush: Stylized Sculpting ZBrush教程之程序化的雕刻 Lynda课程中文字幕