Linux mysql 配置

2023-05-16

一 、数据库处室化密码

  1. 刚刚装好的数据库需要重置密码:

    alter user user() identified by '12345678';
    
  2. 如果是测试环境, 或者自己玩的环境, 设置密码过于简单, 可以通过一下命令修改关于密码的校验:

    set global validate_password.policy # 密码验证策略(三个值: 0=>low, 1=>medium, 2=> strong )
    set global validate_password.length # 密码长度的最小值
    set global validate_password.number_count # 密码中数据的最小个数
    set global validate_password.mixed_case_count # 大小写的最小个数
    set global validate_password.special_chat_count # 特俗字符的最小个数
    set global validate_password.dictionary_file # 字典文件
    

注意:
1. 高版本是 validate_password.policy, 低版本是 validate_password_policy, 其他设置属性一样
2. 高版本降低密码验证策略 需要先重置一个符合要求的密码(大小写字母数字符号),之后降低密码验证策略, 在修改密码(三步), 低版本可以直接修改密码验证策略, 之后在重置密码(两步)

二、四个初始库的各自作用:

  1. information_schema: 主要保存 Mysql 数据库服务器的系统信息, 比如数据库的名称, 数据表的名称, 字段名称, 读取权限等
  2. performance_schema: 可以用来监控 MySQL的各类性能指标
  3. sys: 主要作用是以一种更容易被理解的方式展示MySQL 数据库服务器的各类性能指标, 帮助系统管理员和开发人员监控MySQL的技术性能.
  4. mysql: 数据库保存了MySQL数据库服务器运行时需要的系统信息, 比如数据文件夹, 当前使用的字符集, 约束检查信息等等

补充内容 : 优化(根据问题优化), 怎么发现问题:

  • 根据体验, 发现问题(查询数据很忙)
  • performance_schema: 监控数据库性能标准指标发现问题(指标不唯一), 是具体库,小的指标
  • sys: 数据库服务器的指标

注意:

  • 系统默认的4个数据库不建议使用和修改, 后续使用和测试建议自己建立数据库,系统默认的4个数据库更多的是监控数据库的各种指标, 如果修改使用, 不利于后面的优化和显示所有数据库

三、置数据库远程链接

  1. 如果远程链接报错(错误码2003), 那么需要设置数据库默认端口号 3306 可以通过通过防火

    /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT # linux 命令(如果是云端服务器,需要去安全组里面配置端口号)
    
  2. 如果远程链接报错(错误码1130),那么是因为当前登录用户的host限制, 需要进入数据库, 并且开放host 给指定的用户(IP)或者所有用户(%)

    mysql -u root -p # 进入数据库
    show database; # 显示所有数据库
    use mysql; # user表在mysql库中
    update user set host = '%' where host='localhost' and user='root'; # 更新root 用户对应host, 可以让所有用户ip地址访问
    
  3. 重启 数据库服务

    service mysqld restart
    
  4. 如果远程链接继续报错(错误码2058), 那就是plugin 的密码策略没有通过,需要更改user表plugin字段对应的密码策略:

    create user 'test01'@'%' identified by '12345678'; # 创建一个用户, 可以不新建, 直接在root用户上更改
    flush privileges; # 刷新
    grant all privileges on *.* to test01@'%'; # 用户授权, 更改user 库中 plugin 对应的密码策略
    service mysqld restart; # 退出数据库, 重启服务
    set global validate_password.policy=0;  # 更改密码检验等级
    alter user 'test01'@'%' identified with mysql_native_password BY '12345678'; # 更改 plugin 对应密码策略
    flush privileges; # 刷新, 之后退出重启数据库
    

注意:

  • MySQL8 种支持2种密码安全策略, 新建用户密码默认使用caching_sha2_password,
    caching_sha2_password
    mysql_native_password
    数据库可以开始远程链接

四 、3306和33060的区别

  1. 3306 是mysql 协议的默认端口号, mysql 的客户端或者中间件通过3306的端口号, 数据备份还原
  2. 33060 是 mysqlx 协议的端口号

五 、mysql 配置文件(linux 环境下, 配置文件路径/etc/my.cof)解析

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld] # 服务名称
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M  # 最大的数据占用内存
# 最大的数据占用内存, 用于缓存, 索引 和数据的内存大小, 这个当然是越大越好, 数据读写在内存中非常快, 较少了对磁盘的读写
# 较优设置: 一般设置buffer pool 大小为总内存的 3/4 或者 4/5
#
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
# 在mysql8 中默认开启二进制日志文件, 可以通过命令: show variables like 'log_bin'; 查看是否开启, 如果相关闭, 则配置 disable_log_bin 即可, 取消disable_log_bin 前面的 井号并重启MySQL服务
# 
# 
# 
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M # 优化join 查询
# sort_buffer_size = 2M # 优化排序数据
# read_rnd_buffer_size = 2M # 在 sort_buffer_size 之后使用
# join_buffer_size 优化join 查询, 因为增加的 join buffer 可以容纳更多的外表join字段记录, 这样就可以让内部表批量的匹配更对的外部字段, 相对来减少匹配次数, 提高了join的查询效率, 但是不易过大, 过大无效
# sort_buffer_size 优化排序数据,  sort hi后的数据是以key-value 的形式存在的, 使用这些指针去读取数据, 将是以指针数据物理顺序去读取, sort 后有大量的数据行
# read_rnd_buffer_size 这个参数使用在 sort 之后, 以保证获取以顺序的方式获取查到的数据, 如果 使用到很多的 order by 查询语句, 增涨这个值能过提升性能, 查询字段中包含Blob/Text字段, 这个配置就很重要了, 必须放到 sort_buffer_size 之后, sort_buffer_size开了, read_rnd_buffer_size 就要开
#
# 
# 
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password # 密码安全策略插件
# mysql8 之后 默认是caching_sha2_password , 还有 sha256_password 以及mysql_native_password(可远程链接) mysql8之前默认为mysql_native_password
#
#
#
datadir=/var/lib/mysql   # 数据库, 数据文件路径
socket=/var/lib/mysql/mysql.sock # 数据库锁定文件, 只能启动一次
log-error=/var/log/mysqld.log  # 数据库日志文件
pid-file=/var/run/mysqld/mysqld.pid # 数据库进程文件目录

未完待续, 欢迎评论补充

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux mysql 配置 的相关文章

  • PHP MYSQL文件内容转义问题

    我正在尝试使用 php 将 pdf 文件上传到 mysql 数据库中 除了文件内容之外 一切都很好 无论我如何尝试转义特殊字符 查询总是失败 主要是 未知命令 n 我使用过addslashes mysql real escape strin
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道
  • 在 SQL 中,如何从 SELECT * FROM ... 中排除结果?

    我知道我的标题不太具有描述性 让我在这里详细解释一下 假设一个表有 26 个字段 例如字段 a 字段 z 我只想要一个选择查询只返回 15 个字段 所以 通常 我会执行 SELECT field a field b field o FROM
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 如何检测Mysql/innodb中的死锁?

    我知道在 Innodb 中使用事务时不可避免地会发生死锁 并且如果应用程序代码正确处理死锁 它们是无害的 正如手册所说 只需再试一次 所以我想知道 如何检测死锁 死锁是否会发出一些特殊的 mysql 错误号 如果重要的话 我正在使用 PHP
  • 删除行导致锁超时

    当我尝试从表中删除行时 我不断收到这些错误 这里的特殊情况是我可能同时运行5个进程 该表本身是一个 Innodb 表 约有 450 万行 我的 WHERE 子句中使用的列没有索引 其他指数按预期运行 这是在事务中完成的 首先删除记录 然后插
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐