Category: MySQL

重设 MySQL / MariaDB 忘记的 root 密码

在安装 MySQL 或 MariaDB 服务器后, 当执行 mysql_secure_installation 后会完成一些基本的安全设定, 其中一项就是设定 root 的密码。 如果在往后忘记了这个 MySQL root 密码, 可以用以下方法重设, 以下文章会以 CentOS 环境作为例子. 首先将运行中的 MySQL Server 停止执行: # systemctl stop mariadb 或 # …

MySQL 删除字段内所有 \n 及 \r 字符

今天在一个系统上除错, 发现用以下 SQL 指令找不到资料: 要用以下 SQL 指令才可以找到: 用 phpMyAdmin 检查那些资料好像没问题, 再细心找才发现有些资料的字段结尾有 “\n” 或 “\r”, 出现这个问题的原因大栏是在插入资料时没有删除掉 “\n” 这类字符, 插入的部份很容易解决, 再来要将原有的资料内的 “\n” 及 “\r” 删除。 在处理前先将资料表备份, 然后可以用以下 SQL 指令将所有 “\n” 及 …

解决 mysqldump Access denied …… ‘information_schema’ when using LOCK TABLES

原本用 mysqldump 备份 MySQL 一直没有问题, 但近日在一台新主机上用 mysqldump 备份所有资库时, 出现以下错误: mysqldump: Got error: 1044: Access denied for user ‘root’@’localhost’ to database ‘information_schema’ when using LOCK TABLES 我也肯定输入的 MySQL 密码没有问题, 因为已经将登入资储存, …

MySQL / MariaDB 5.5 升级到 MySQL 5.6

RHEL 及 CentOS 7 默认的资库系统是 MariaDB 5.5 (等同 MySQL 5.5), 虽然现时 MySQL 最新版是 5.7, 但一般上升级都建议一级一级上, 而 MySQL 5.6 比 5.5 也提高了效能及提供更多功能, 以下是在 RHEL 及 CentOS 从原来的 MySQL 5.5 或 …

修复错误删除 InnoDB ibdata 档案资料

当错误删除了 MySQL 的 InnoDB 数据库档案 ibdata 及 ib_logfile, 如果 MySQL 服务器仍在执行状态, 而且资料可以照常写入, 切记不要关闭 MySQL 服务器或 kill 掉 mysqld, 这时还可以将 InnoDB 数据库修复的, 以下记录修复的步骤, 如果要测试, 切记在测试环境进行, 切勿在生产环境测试: 1. 先找出 mysqld 的 …

MySQL – DELETE, TRUNCATE 及 DROP 的分别

在 MySQL 要删除资料可以用 DELETE 指令, 而清空资料表可以用 TRUNCATE, 删除资料表则可以用 DROP TABLE, 以下会介绍这三个 MySQL 指令的分别。 TRUNCATE MySQL 的 TRUNCATE 是用作清空资料表, auto_increment 的数值也会重设, 清空后的资料表就如同刚建立一样, 因为 TRUNCATE 的做法是先 DROP 掉资料表, 再用 CREATE 指令重新建立资料表, …

MySQL InnoDB 删除资料后释放硬盘空间

MySQL 使用 InnoDB 时,当资料表用 DELETE FROM 删除资料后,硬盘空间并不会立即释放,因为 MySQL 只对已删除的资料标记为删除,并没有真正删除资料,这会导致 InnoDB 的档案不断扩大。只有在 DROP TABLE 及 TRUNCATE TABLE 时才会释放空间。 如果没有开启 innodb_file_per_table,所有 InnoDB 的资料都会储存在 ibdata 档案内,对于数据库的体积很大的 MySQL Server,要释放硬盘空间会很痛苦,因为只有将 MySQL 数据库导出,再重新将备份还原才可以释放空间。如果 innodb_file_per_table 有开启,每个 …

查询已安装的 MySQL / MariaDB 版本

由于各个 MySQL 的版本都略有不同,而且又有 MaridDB 或 Percona 等分支版本, 很多时系统管理员都需要查询系统内的 MySQL 版本,要查询系统内的 MySQL 版本,以下列出几种查询 MySQL 版本的方法。 CLI 在 CLI 查询 MySQL 版本十分简单,用 mysql 指令便可以, 而且不用登入 MySQL: $ mysql -V 执行后会输出 MySQL …

MySQL / MariaDB 移除使用者帐号及权限

当 MySQL / MariaDB 服务器开启了多个帐号给不同网站使用, 有需要将当中的特定帐号移除, 除了登入 phpMyAdmin 操作外, 也可以用 MySQL 指令完成, 以下是 MySQL 及 MariaDB 移除使用者帐号的方法。 首先登入到 MySQL: # mysql -u root -p 登入 MySQL 后, 可以先列出所有使用者帐号, 以确定要删除的帐号: …