zoukankan      html  css  js  c++  java
  • MySQL配置文件my.cnf设置

    设置建议:

      对于单台运行的WEB服务器,建议加上:

      skip-locking

      skip-name-resolve

      skip-networking

      在PHP链接数据库时使用"LOCALHOST".这样MySQL 客户端库将覆盖之并尝试连接到本地套接字.(

      我们可以从PHP.INI中

      代码:

      ; Default socket name for local MySQL connects. If empty, uses the built-in

      ; MySQL defaults.

      mysql.default_socket = /tmp/mysql.sock看出 默认情况下 UNIX 将访问/tmp/mysql.sock)

      以下是部分选项解释:

      my.cnf默认是不存在的.你可以在/usr/local/share/mysql/下看到:

      my-huge.cnf

      my-innodb-heavy-4G.cnf

      my-large.cnf

      my-medium.cnf

      my-small.cnf

      等文件.将其中合适你机器配置的文件拷贝到/etc/my.cnf或mysql data目录/my.cnf(/var/db/mysql)下或~/.my.cnf.文件内都有详细的说明

      [mysqld]

      port = 3306

      serverid = 1

      socket = /tmp/mysql.sock

      skip-locking

      # 避免MySQL的外部锁定,减少出错几率增强稳定性。

      skip-name-resolve

      禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!

      back_log = 384

      指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。

      back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。

      试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。

      key_buffer_size = 256M

      # key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。

      对于内存在4GB左右的服务器该参数可设置为256M或384M。

      注意:该参数值设置的过大反而会是服务器整体效率降低!

      max_allowed_packet = 4M

      thread_stack = 256K

      table_cache = 128K

      sort_buffer_size = 6M

      查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。

      read_buffer_size = 4M

      读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!

      join_buffer_size = 8M

      联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!

      myisam_sort_buffer_size = 64M

      table_cache = 512

      thread_cache_size = 64

      query_cache_size = 64M

      指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:

      代码:

      # > SHOW VARIABLES LIKE '%query_cache%';

      # > SHOW STATUS LIKE 'Qcache%';如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;

      如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。

      tmp_table_size = 256M

      max_connections = 768

      指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。

      max_connect_errors = 10000000

      wait_timeout = 10

      指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。

      thread_concurrency = 8

      该参数取值为服务器逻辑CPU数量×2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8

      skip-networking

      开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!





    一、        关于MySQL5
    MySQL5系列数据库是MySQL的最新版本的数据库,比较流行的发行版是mysql-5.0.18。MySQL        英文官方网站是http://www.mysql.com

    二、        获得MySQL5
    所有的关于MySQL数据库的程序,都可以在它的英文官方网站下载到,但是,鉴于不不是所有人的英文都很好,所以建议大家尽量区MySQL的中文官方网站下载自己所需的程序,如果找不到,再去找英文的网站。
    MySQL5有安装版和免安装版之分,顾名思义,安装版就是需要安装以后才可以使用;免安装版的MySQL下载下来之后就可以使用,或者进行简单的设置就可以使用。
    MySQL5安装版下载地址:
    Windows版本:http://download.mysql.cn/src/2006/0218/199.html
    Linux版本(源码包):http://download.mysql.cn/src/2006/0208/62.html
    MySQL5免安装版下载地址:
    Windows版本:http://download.mysql.cn/src/2006/0302/205.html

    三、        MySQL5安装
    Windows版安装手册:http://bbs.mysql.cn/thread-261-1-1.html
    Linux版本(源码包)安装手册:http://bbs.mysql.cn/thread-493-1-2.html

    MySQL有安装版本和免安装版本,免安装版本解压后的文件夹内没有安装程序,可以直接使用。
    Windows免安装版本使用手册:http://bbs.mysql.cn/thread-552-1-1.html

    四、        备份与恢复
    常规备份命令是mysqldump,这里以tm数据库为例,做简单介绍,详细资料参考
    http://info.mysql.cn/install/2006/0410/5521.html
    备份:
    #mysqldump -u root -p tm > tm_20060101.sql  
    按提示输入密码,这就把tm数据库所有的表结构和数据备份到tm_20060101.sql了,因为要总进行备份工作,如果数据量大会占用很大空间,
    这是可以利用gzip压缩数据,命令如下:
    #mysqldump -u root -p tm | gzip > tm_20060101.sql.gz
    还可以备份到远程机器,用-h制定,如
    #mysqldump -u root -p tm > tm_20060101.sql -h xxx.xxx.xxx.xxx
    可以直接备份到IP地址为xxx.xxx.xxx.xxx的远程计算机。
    系统崩溃,重建系统,或恢复数据库时,可以这样恢复数据:
    #mysql -u root -p tm < tm_20060101.sql
    从压缩文件直接恢复:
    #gunzip < tm_20060101.sql.gz | mysql -u root -p tm

    五、        FAQ

    Q:为什么我下在的“安装程序”里面没有安装文件?
    A:你下载的可能是免安装版本。请给出详细的版本信息。

    Q:如何启动和关闭mysql?
    A:linux下:比如我的mysql是用源码方式安装在/usr/local/mysql
    自动:将/usr/local/mysql/share/mysql/mysql.server拷贝到/etc/rc.d/init.d/下,然后
    chkconfig --add mysql.server就可以开机就启动mysql服务了。
    手动:以root身份执行/usr/local/mysql/bin/mysqld_safe --user=mysql
    windows下:
    自动:
    用cmd方式,到mysql安装路径的bin文件夹下,执行:mysqld-nt --install
    手动:直接到到mysql安装路径的bin文件夹下执行net start mysql即可。
    如果不想让mysql在计算机启动时候就启动服务,执行:mysqld-nt --remove
    也可以在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中删除对应服务并重启计算机。
    关闭mysql:mysqladmin -uroot -p shutdown
    启动mysql:
    mysqld-nt --install
    net start mysql

    Q:如何修改mysql的用户密码?
    A :在这里请区分连接mysql数据库的用户密码和系统的用户密码!!

    mysql -uroot -p
    输入密码
    #登录mysql
    >use mysql
    >update user set password=password("new_pass") where user="userName";  #userName换成你要修改的用户名的密码,比如root
    >flush privileges;
    >exit;

    Q:如何登录mysql?
    A:mysql -uroot -p回车后,输入密码,再回车即可。如果自己没有修改的话,默认密码为空。

    Q:mysql如何很好的变成图形化数据库呢?自身有自带的图形化工具没有?
    A:mysql自带一个字符的客户端,但是还有好多的像mysql_center、SQLyog、phpMyAdmin、Mysql Query Browser,Mysql Administrator、mysqlcc这样好的图形管理工具。
    mysql_centerd在本站的下载地址:http://bbs.mysql.cn/thread-517-1-1.html
    SQLyog去网上搜索,很多的,SQLyog407版本不错。
    phpMyAdmin下载地址:http://download.mysql.cn/opencode/2006/0207/55.html
    mysql.com提供的管理软件下载地址:http://dev.mysql.com/downloads/gui-tools/5.0.html
    其它的我就不一一提供下载地址,自己到网上搜索下载。

    Q:为什么用mysql  -uusername -p登录mysql服务器时出现如下提示:
         Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server!("xxx.xxx.xxx.xxx"代表要登录的服务器)
    A:这是因为你要登录的mysql服务器不允许用户username从xxx.xxx.xxx.xxx这个ip地址登录。
    解决办法是在服务器登录mysql,操作步骤为:
    mysql -uroot -p
    (输入密码)
    use mysql
    update user set Host="%" where User="username";
    flush privileges;

    Q:什么是phpMyAdmin?
    A:phpMyAdmin 是一个用PHP编写的,可以通过互联网控制和操作MySQL。通过phpMyAdmin可以完全对数据库进行操作,例如建立、复制/删除数据等等。
    有了phpMyAdmin 就可以完全不使用mysql命令,直接使用phpMyAdmin就能管理mysql的所有数据和数据库

    Q:如何使用phpMyAdmin?
    A:要使用phpMyAdmin,下载后,把它释放到web服务器的根目录下,取个名字,比如就叫phpMyAdmin,然后在浏览器的地址栏输入:
    http://X.X.X.X/phpMyAdmin/index.php
    就可以了。
    如果是phpMyAdmin 2.8.0.2以上版本的,这样使用会报错,因为默认没有这个软件需要的配置文件config.default.php,在2.6.X版本下都有这个文件,只是口令不对。对于2.6.X版本的,可以直接用文本编辑器打开这个文件,把其中第一个$cfg中内容修改成自己的用户名及密码就可以了:
    $cfg['Servers'][$i]['auth_type']     = 'config';    // Authentication method (config, http or cookie based)?
    $cfg['Servers'][$i]['user']          = 'root';      // MySQL user
    $cfg['Servers'][$i]['password']      = '自己的密码';
    不设置密码的话,系统会提示:
    Access denied for user 'root'@'localhost' (using password: NO)

    如果是2.8.0.2版本的,程序会提示请运行scripts/setup.php或者index.php这样的文件进行配置以生成config.inc.php文件。

    Q:为什么我使用mysql出现乱码
    A:安装mysql5时默认的字符集是瑞典编码latin1,不支持中文。并且出现乱码的原因很多,建议到bbs.mysql.cn论坛寻找答案。发贴的话请详细说明自己的环境、安装过程及使用的信息,以便大家能快速分析你的问题。

    Q:如何修改字符集?
    A:
    mysql -uroot -p
    输入密码
    选择你的目标数据库
    mysql> use dbname
    显示当前字符集
    mysql> show variables like '%char%';
    +--------------------------+----------------------------------------+
    | Variable_name            | Value                                  |
    +--------------------------+----------------------------------------+
    | character_set_client     | gb2312                                 |
    | character_set_connection | gb2312                                 |
    | character_set_database   | gb2312                                 |
    | character_set_results    | gb2312                                 |
    | character_set_server     | gb2312                                 |
    | character_set_system     | utf8                                   |
    | character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
    +--------------------------+----------------------------------------+
    7 rows in set (0.00 sec)
    最好是保持字符集统一。如果你要修改哪个字符集,用set命令,如:
    mysql> set character_set_client gbk;
    Query OK, 0 rows affected (0.00 sec)

    mysql> show variables like '%char%';
    +--------------------------+----------------------------------------+
    | Variable_name            | Value                                  |
    +--------------------------+----------------------------------------+
    | character_set_client     | gbk                                    |
    | character_set_connection | gb2312                                 |
    | character_set_database   | gb2312                                 |
    | character_set_results    | gb2312                                 |
    | character_set_server     | gb2312                                 |
    | character_set_system     | utf8                                   |
    | character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
    +--------------------------+----------------------------------------+
    再改回来:
    mysql> set character_set_client=gb2312;
    Query OK, 0 rows affected (0.00 sec)

    mysql> show variables like '%char%';
    +--------------------------+----------------------------------------+
    | Variable_name            | Value                                  |
    +--------------------------+----------------------------------------+
    | character_set_client     | gb2312                                 |
    | character_set_connection | gb2312                                 |
    | character_set_database   | gb2312                                 |
    | character_set_results    | gb2312                                 |
    | character_set_server     | gb2312                                 |
    | character_set_system     | utf8                                   |
    | character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
    +--------------------------+----------------------------------------+
    7 rows in set (0.00 sec)
    自己试试就知道了。

    Q:为什么我的phpmyadmin提示不能载入mysql扩展?
    A: 一、看下你的PHP目录和PHP\EXT下有没有php_mysql.dll这个文件。
          二、配制一下环境变量把php_mysql.dll所在的目录加入的PATH里。
          三、有的php安装程序安装好以后,在安装路径下,并没有ext文件夹(不知道为什么),最好下载个配置的php,然后,将exe文件夹拷贝到安装目录下,再进行相应的配置。
          四、看一下c:\winnt 或者是 c:\windows下的php.ini文件里的php_mysql.dll前面的;(分号)是否去掉了,如果没有去掉请去掉,然后,将mysql安装路径下bin文件夹下的libmysql.dll放在安装php的根目录一般为C:\php ,同时也在 C:\windows 下也放各一个,之后重新启动IIS或者是APACHE。有的时候总是刷新一页,即使去掉分号也还是不能载入mysql扩展,最后新打开一个窗口,再试。

    Q:为什么提示:"没有发现 PHP 的扩展设置mbstring, 而当前系统好像在使用宽字符集。没有 mbstring 扩展的 phpMyAdmin 不能正确识别字符串,可能产生不可意料的结果."
    A:因为你没有打开mbstring在扩展,解决办法:打开php的配置文件php.ini,将
    extension=php_mbstring.dll前面的分号";"去掉,并改到正确的路径,一般为
    ext/php_mbstring.dll

    Q:为什么PHP连接mysql会有下面的提示?
           Fatal error: Call to undefined function mysql_connect() ……
    A:很有可能是没有载入mysql扩展,如何解决,请参考上面的方法。
    因为如果你的系统没有载入mysql扩展的话,phpmyadmin能给出提示,而一般的程序则不能给出。
    如果phpmyadmin没有给出提示,而你恰好用的apache服务器,尝试一下方法:
    首先是去掉;extension=php_mysql.dll前面的“;”(;为注释)
    第二步是将C:\php\ext中的php_mysql.dll复制到C:\WINDOWS(C:\WINNT)中即可,
    并重起Apache。

    Q:为什么我不能看孵化池资料?
    A:MYSQL.CN的孵化池是专门为初学者提供学习的地方,这里我就不多介绍了,详情请访问:http://bbs.mysql.cn/thread-369-1-1.html

    Q:能中文数据库名称么?
    A:可以,但是不推荐,用起来不方便。

    Q:如果我忘记了root密码,怎么办?
    A:
    在windows下:
    打开命令行窗口,停止mysql服务:        Net stop mysql
    启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe
    执行:mysqld-nt --skip-grant-tables
    另外打开一个命令行窗口,执行mysql
    >use mysql
    >update user set password=password("new_pass") where user="root";
    >flush privileges;
    >exit
    用Ctrl+Alt+Del,找到mysqld-nt的进程杀掉它,在重新启动mysql-nt服务,就可以用新密码登录了

    在linux下:
    如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。
    启动 MySQL :bin/safe_mysqld --skip-grant-tables &
    就可以不需要密码就进入 MySQL 了。
    然后就是
    >use mysql
    >update user set password=password("new_pass") where user="root";
    >flush privileges;
    重新杀 MySQL ,用正常方法启动 MySQL 。

    Q:为什么出现如下的提示:
    [root@0-8-2-df-fa-ee ~]# mysql
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    注:也可能是其它路径下的mysql.sock
    A:说明mysql服务没有启动,mysql.sock是mysql服务启动后启动生成的文件,
    一般先杀掉mysql服务:killall mysql
    然后,再根据自己的安装情况启动mysql即可。比如,安装的时候,用的是
    ./configure --prefix=/usr/local/mysql的
    用下面的命令启动:
    /usr/local/mysql/bin/mysqld_safe --user=mysql &
    之后再去执行/usr/local/mysql/bin/mysql -u root -p 登录进入mysql数据库
    还不行的话,一次执行下面的命令:
    sync
    reboot                     ;重启计算机,执行时请小心!!!

    Q:为什么出现下面的错误
    #1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

    A:你使用的数据库是4.1以上,用命令行连接MySQL数据库后,执行下面的命令:
    UPDATE mysql.user SET password=OLD_PASSWORD("your_password") WHERE Host="your_host" AND User="your_username" ;
    即可解决。

    your_password:改成你连接数据库的密码,比如 123
    your_host:改成你连接数据库的主机,如果是本地的话,就是localhost
    your_username:改成你连接数据库的用户,比如 root

    Q:为什么mysql提示我:Data too long for column ……
    A:首先确保你的数据大小符合你的字段大小。
    再检查你的数据库编码,数据库的编码是否与操作数据库工具的编码一致!


    Q:为什么我修改wait_timeout没有生效
    A: 需要同时修改
    interactive_timeout
    wait_timeout
    才会生效(show variables;)

    来源:http://www.blogjava.net/baoyaer/articles/209466.html

  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/zfying/p/2580458.html
Copyright © 2011-2022 走看看