Category: MySQL

MySQL 限制每个使用者最大连线数

MySQL 的 max_connections 可以设定 MySQL 服务器的最大连线数,但 max_connections 是针对整台 MySQL 服务器,如果某一个 MySQL 帐号使用过多连线数,可以用以下方法限制每个使用者最大连线数,限止因为个别高用量使用者拖累其他使用者。 另一个设定参数是 max_user_connections,就可以设定每个使用者的连线数量限制, 以避免一个使用者的用量过高而影响整台 MySQL 服务器的运作。一般上可以将 max_user_connections 设定成 max_connections 的一半数值, 例如 max_connections 是 1000, max_user_connections 可以设定成 500, 设定方法先开启 …

提高 MySQL 的 open files limit

对于中高用量的 MySQL 服务器, 提高 max_connections 是必然的设定, 不然便会出现 too many connections 错误。但 max_connections 这个数值不可以任意提高的, 如果设定太高, 会出以类似以下的错误: Changed limits: max_open_files: 1024 max_connections: 214 table_cache: 256 例如设定 max_connections 到 1000, 系统出现上面 Warning …

MySQL 管理相关指令

以下是一些常用的 MySQL 管理相关指令汇整, 以下的指令如果以 # 字符开头, 代表是在 CLI 输入的指令, 如果是以 “mysql>” 开始, 则表示登入 MySQL 后输入的指令。 登入 MySQL: 建立数据库: 汇入数据库: (将 /path/to/backup.sql 汇入到 database_name 数据库) 汇出数据库: (将 database_name 数据库汇出到 /path/to/backup.sql) …

MySQL 修改使用者密码

修改 MySQL 密码可以透过 mysql 指令 (在 Windows 下是 mysql.exe),mysqladmin 指令或 phpMyAdmin 完成,以下是用 mysql 及 mysqladmin 修改 MySQL 使用者密码的方法。 mysql 指令 在指令模式用 root 帐号透过 mysql 登入 MySQL 服务器: # mysql …

MySQL Log 记录档位置

MySQL 和 MariaDB 的 Log 记录档默认储存在数据库目录, Redhat 及 Debian 系发行版的数据库目录都是在 /var/log/mysql/ 目录。 如果在数据库没有找到, 可以查看 /etc/my.cnf 里面的 log-error 一行, 这里可以自订 Log 记录档的位置, 例如在 CentOS 7 的 MariaDB 是这样: 知道 Log …

MySQL 开启 innodb_file_per_table 及转换现有资料表

MySQL 会将 InnoDB 的资料表内的资料及索引全部储存到共享空间, 即是所有 InnoDB 资料表的资料全都放到 ibdata1 档案内。而 innodb_file_per_table 就可以设定每个资料表, 使用独立表空间储存资料, 即是每个资料表有属于自己的 .ibd 档案。 这样做的好处是对日后的管理较容易, 在 MySQL 5.6.6 开始, innodb_file_per_table 默认是开启, 而在 5.6.6 前的版本默认是关闭的, 要查询目前 MySQL 的 innodb_file_per_table …

列出所有 MySQL 数据库占用空间体积

当发现 MySQL / MariaDB 服务器的硬盘使用空间越来越多, 想找出那一个数据库占用最多空间时, 以前用 MyISAM 储存引擎时, 可以直接用 du 指令查看数据库目录。但如果是用 InnoDB 的话, 用 du 指令就没有用了。 要找出所有 MySQL 数据库的空间大小, 可以用 MySQL 的 root 帐号登入 MySQL CLI 或 PHPMyAdmin, …

MySQL 完整复制资料表

当需要将 MySQL 资料表完整复制时, 如果资料表是使用 MyISAM 储存引擎, 可以直接停止 MySQL 服务器, 再将资料表的 .MYD 及 MYI 档案复制。但如果资料表是 InnoDB, 或者不想停止 MySQL 运作, 除了用传统的备份方法外, MySQL 已经内建了复制的功能, 具体做法如下。 假设旧资料表是 old_table, 新资料表是 new_table, 可以执行以下 SQL Query: …

MySQL 换算 Unix Timestamp 日期时间

在多时写程式都会用 Unix Timestamp 储存时间,好处是可以很简单作日期计算,以及用不同格式显示日期。 以前储存在 MySQL 的日期时间,会撷取后用 PHP 的 date() 函式显示,但 MySQL 已经内置了用作换算 Unix Timestamp 的功能,用起来很方便,以下记录一下用法。 UNIX_TIMESTAMP() — 取得目录 Unix Timestamp: 以前习惯在 PHP 用 time() 函式插入 Unix Timestamp 到 …

同时安装 MySQL 及 MariaDB

MariaDB 是 MySQL 的替代产品, 也是 RHEL 7 及 CentOS 7 的默认数据库系统。有时需要在 MariaDB 及 MySQL 之间做测试, 或者在不同版本 MySQL 之间做测试, 同时安装及运行 MariaDB 及 MySQL 会很方便, 以下纪录一下在主机内同时安装 MariaDB 及 MySQL 运行, 当然如果有需要, …