mysql放在公共环境下_mysql在生产环境下的配置

前言

mysql是目前主流的数据库系统,在linux下使用yum/apt安装mysql非常方便,且已经可以测试开发使用,但要放到生产环境下,就需要对mysql进行一些配置。本文以刚以yum/apt安装好的mysql为例,介绍如何配置才能应用于生产环境,主要作为个人备忘;因个人mysql的运维经验有限,所以如果有错误请不吝赐教。 ^_^

正文

为root用户设定密码

默认安装的mysql只有一个root用户,且root用户无需密码即可登录,且权限无限制。所以必须为root用户设定一个密码,方法是:

/usr/bin/mysqladmin -u root password 'root-password'这样root登录时就必须要求输入设定的密码了。

允许其他主机访问

使用yum/apt安装的mysql默认只允许localhost/127.0.0.1本地访问,如果mysql作为独立的数据库服务器,一定是要能被其他主机访问的,这是通过授权privileges来实现的。mysql官方提供的grant语法是:

GRANT

priv_type [(column_list)]

[, priv_type [(column_list)]] ...

ON [object_type] priv_level

TO user_specification [, user_specification] ...

[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]

[WITH with_option ...]

object_type:

TABLE

| FUNCTION

| PROCEDURE

priv_level:

*

| *.*

| db_name.*

| db_name.tbl_name

| tbl_name

| db_name.routine_name

user_specification:

user [IDENTIFIED BY [PASSWORD] 'password']

ssl_option:

SSL

| X509

| CIPHER 'cipher'

| ISSUER 'issuer'

| SUBJECT 'subject'

with_option:

GRANT OPTION

| MAX_QUERIES_PER_HOUR count

| MAX_UPDATES_PER_HOUR count

| MAX_CONNECTIONS_PER_HOUR count

| MAX_USER_CONNECTIONS count比如要允许192.168.0.10的root用户使用密码192168110来访问数据库中的test1 schema中的所有表,就需要输入:

GRANT all privileges on test1.* to root@'192.168.1.10' identified by '192168110';有时候如果允许192.168.0.10的root可以给其他用户授权,就要在后面加上

with grant option;如果要允许任意主机的root用户,只需要把192.168.1.10改为%;如果要限制schema中的某个表,只需要将 test1.* 改为 test1.table1 即可;如果对schema和table不做限制,则用 *.* 代替 test1.* 即可。

注:刚发现with_option竟然有 MAX_QUERIES_PER_HOUR这类的配额控制,原来是这么做的,牛叉!

修改字符集编码

默认安装的mysql的字符集都是latin1,登录到mysql后,输入命令:

show variables like "%char%";然后会显示

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+说明这些编码属性默认都是latin1。

这里需要解释每种编码属性的详细含义!

但是为了能适应中文,所以需要把mysql的字符集都改为utf8,修改方法是直接修改mysql的配置文件:/etc/my.cnf,在[mysqld]下加入两行:

default-character-set=utf8

init_connect='SET NAMES utf8'然后在[client]下(如果没有client则增加)新增一行:

default-character-set=utf8这样就全部ok鸟。

修改mysql数据存放目录 默认安装的mysql,会将存储的数据放在/var/lib/mysql下(可参见/etc/my.cnf下的);但有些时候,因为业务需要,linux安装后的磁盘会按照特定大小来分区,比如我机器上的磁盘分区是:

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

9.5G 2.5G 6.6G 28% /

tmpfs 1.9G 0 1.9G 0% /dev/shm

/dev/vda1 485M 58M 402M 13% /boot

/dev/vdb1 985G 200M 935G 1% /data绝大多数的磁盘空间都在/data分区下,这样就导致/var/lib/mysql这个分区没几个G的空间,存不了多少记录mysql就会报磁盘满的错误;所以必须将mysql的数据存放目录放在/data分区里。

一个简单的办法就是利用软链接:

首先要关闭mysql:service mysqld stop

然后依次调用mv /var/lib/mysql /data/mysqldatadir

ln -s /data/mysqldatadir /var/lib/mysql

其实第二步已经把数据库的数据目录挪走了,但是如果是使用root用户执行以上操作,会由于权限问题(mysql默认是使用mysql用户)导致mysql start不起来,所以这个时候最简单的就是:(够简单够粗暴!)chmod -R 777 /var/lib/mysql

这样就ok了,重启mysq即可,就不怕数据存一会儿磁盘就报不够了 ^_^

还有一些比如最大连接数、最大错误连接数等可以做性能优化,下次再介绍 ^_^

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值