标签 MySQL 下的文章

MySQL的用户权限

在MySQL内部,服务器将权限信息存储在mysql数据库的授权表中(即,在名为的数据库中mysql)。

MySQL服务器在启动时将这些表的内容读取到内存中,并基于授予表的内存副本对访问控制做出决定。MySQL特权系统确保所有用户只能执行允许的操作。

作为用户,当您连接到MySQL服务器时,您的身份由连接的主机和您指定的用户名确定。在连接后发出请求时,系统将根据您的身份和您想要执行的操作授予权限。因为没有理由认为给定的用户名属于所有主机上的同一个人,所以MySQL会将您的主机名和用户名都视为识别您的身份。

当您运行连接到服务器的客户端程序时,MySQL访问控制涉及两个阶段:

  • 阶段1:服务器根据您的身份接受或拒绝连接,以及您是否可以通过提供正确的密码来验证您的身份。
  • 阶段2:假设您可以连接,服务器会检查您发出的每条语句,以确定您是否有足够的权限来执行它。例如,如果尝试从数据库中的表中选择行或从数据库中删除表,则服务器会验证您是否具有SELECT该表的DROP权限或数据库的权限。

- 阅读剩余部分 -

MySQL调优参考

MySQL调优可以从几个方面来做:

架构层:

做从库,实现读写分离;

系统层次

  1. 增加内存;
  2. 给磁盘做raid0或者raid5以增加磁盘的读写速度;
  3. 可以重新挂载磁盘,并加上noatime参数,这样可以减少磁盘的i/o;

MySQL本身调优:

  1. 如果未配置主从同步,可以把bin-log功能关闭,减少磁盘i/o;
  2. 在my.cnf中加上skip-name-resolve,这样可以避免由于解析主机名延迟造成mysql执行慢;
  3. 调整几个关键的buffer和cache。调整的依据,主要根据数据库的状态来调试;

- 阅读剩余部分 -

MySQL安全措施

数据库作为数据管理的平台,它的安全性首先由系统内部和网络安全两部分来决定的。对于系统管理员来说,首先要保证系统本身的安全,在安装MySQL数据时,需要对基础环境进行较好的配置。

一、修改root用户口令

缺省安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母、数字和符号组成的不规律密码。使用MySQL自带的命令 mysqladmin修改root密码,同时也可以登陆数据库,修改数据库mysql下的user表的字段内:

mysql> update mysql.user set password=password('upassword') where user='root';
mysql> flush privileges;

二、删除默认数据库和数据库用户

一般情况下,MySQL 数据库安装在本地,并且也只需要本地的 php 脚本对 mysql 进行读取,所以很多用户不需要,尤其是默认安装的用户。

MySQL 初始化后会自动生成空用户和test库,进行安装的测试,这会对数据库的安全构成威胁,有必要全部删除,最后的状态只保留单个root即可,当然以后根据需要增加用户和数据库:

- 阅读剩余部分 -

MySQL的三种常见sql_mode

MySQL数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等!

我们可以通过以下方式查看当前数据库使用的sql_mode:

mysql> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)

以及:

mysql> show variables like 'sql_mode%'\G
*************************** 1. row ***************************
Variable_name: sql_mode
        Value: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
1 row in set (0.03 sec)

- 阅读剩余部分 -

MyISAM与InnoDB的区别是什么?

InnoDB和MyISAM是MySQL常用的两个表类型,这两个表类型各有优劣,视具体应用而定。

基本的差别为:

  • MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
  • MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。

一、存储结构

  • MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。
  • InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。

- 阅读剩余部分 -

MySQL Replication 配置

一、前言

MySQL Replication 又称“AB复制”或者“主从复制”,是为了应对高并发、大访问量的情况。

如果网站访问量和并发量太大了,少量的数据库服务器是处理不过来的,会造成网站访问慢。数据写入会造成数据表或记录被锁住,锁住的意思就是其他访问线程暂时不能读写要等写入完成才能继续,这样会影响其他用户读取速度。采用主从复制可以让一些服务器专门读,一些专门写可以解决这个问题。

简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。MySQL主从复制是基于binlog的,首先必须打开master端的binlog记录功能,否则就无法实现。

整个主从过程大致有3个步骤:

  • 主库在运行中会将SQL语句记录成一个二进制文件binlog,通过log dump线程传递给从库。
  • 从库通过I/O线程将主库的binlog事件同步到本地的relaylog中继日志文件。
  • 从库的SQL线程根据relaylog中的SQL语句按顺序执行操作到本地。

- 阅读剩余部分 -