我使用 rpm 安装好了一个mysql 
现在想配置多个实例,请问怎么配置,网上的试过都没有成功数据库
/var/lib/mysql/
配置文件
/usr/share/mysql和Windows不一样,都不在同一个文件夹下面,请问如何安装多个,谢谢

解决方案 »

  1.   

    mysqld_multi:管理多个MySQL服务器的程序
      

  2.   

    5.1.5. mysqld_multi:管理多个MySQL服务器的程序
    mysqld_multi可以管理多个帧听不同Unix套接字文件和TCP/IP端口的连接的mysqld 进程。它可以启动或停止服务器,或报告它们的当前状态。程序寻找my.cnf中的[mysqldN]组(或--config-file选项指定的文件)。N 可以为任何正整数。在下面的讨论中该数字指选项组号,或GNR。组号区别各选项组,并用作mysqld_multi的参数来指定想要启动、停止哪个服务器或获取哪个服务器的状态报告。这些组中的选项与将用来启动mysqld的[mysqld]组中的相同。(例如,参见2.9.2.2节,“自动启动和停止MySQL”)。但是,当使用多个服务器时,需要每个服务器使用自己的选项值,例如Unix套接字文件和TCP/IP端口号。关于在多服务器环境中,每个服务器对应唯一选项的详细信息,参见5.12节,“在同一台机器上运行多个MySQL服务器”。要想调用mysqld_multi,使用下面的语法:shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR] ...]
    start、stop和report表示你想要执行的操作。你可以在单个服务器或多个服务器上执行指定的操作,取决于选项名后面的GNR 列。如果没有该列,mysqld_multi为选项文件中的所有服务器执行该操作。每个GNR值代表一个选项组号或组号范围。GNR值应为选项文件中组名末尾的号。例如,组[mysqld17]的GNR为17。要想指定组号的范围,用破折号间隔开第1个和最后1个号。GNR值10-13代表组[mysqld10]到[mysqld13]。可以在命令行中指定多个组或组范围,用逗号间隔开。GNR列不能有空格字符(空格或tab);空格字符后面的内容将被忽略掉。该命令使用选项组[mysqld17]启动单个服务器:shell> mysqld_multi start 17
    该命令停止多个服务器,使用选项组[mysql8]和[mysqld10]至[mysqld13]:shell> mysqld_multi stop 8,10-13
    使用该命令列出设置选项文件的示例:shell> mysqld_multi --example
    mysqld_multi支持下面的选项:·         --config-file=name指定选项文件名。这关系到mysqld_multi从哪里寻找[mysqldN]选项组。没有该选项,从通用my.cnf文件读所有选项。选项不影响 mysqld_multi从哪里读取自己的选项,总是从通用my.cnf文件的[mysqld_multi]组读取。·         --example显示示例选项文件。·         --help显示帮助消息并退出。·         --log=name指定日志文件名。如果该文件存在,后面为日志输出。·         --mysqladmin=prog_name用来停止服务器的mysqladmin二进制。·         --mysqld=prog_name可用的mysqld二进制。请注意你还可以将该选项的值指定为mysqld_safe。选项被传递给 mysqld。确保在PATH环境变量设定值或mysqld_safe中有mysqld所在目录。·         --no-log按照标准输出打印日志信息,不要写入日志文件。默认情况下,输出写入日志文件。·         --password=password调用mysqladmin时使用的MySQL账户的密码。请注意该密码值不是可选项,不象其它MySQL程序。·         --silent 禁用警告。·         --tcp-ip通过TCP/IP端口而不是Unix套接字文件来连接每个MySQL服务器。(如果找不到套接字文件, 服务器仍然可以运行,但只能通过 TCP/IP端口访问)。默认情况下,使用Unix套接字文件进行连接。该选项影响stop和report操作。·         --user=user_name调用mysqladmin时使用的MySQL账户的用户名。·         --verbose 更详细。·         --version显示版本信息并退出。关于mysqld_multi的一些注解:·         确保停止mysqld服务器(用mysqladmin程序)的MySQL账户在各个服务器中的用户名和密码相同。并且应确保账户具有SHUTDOWN权限。如果你想要管理的服务器的管理账户有许多不同的用户名或密码,你需要在每个服务器上创建一个账户,并具有相同的用户名和密码。例如,你可以执行下面的命令为每个服务器设置一个普通multi_admin账户:·                shell> mysql -u root -S /tmp/mysql.sock -proot_password
    ·                mysql> GRANT SHUTDOWN ON *.*
    ·                    -> TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
    参见5.7.2节,“权限系统工作原理”。你必须为每个mysqld服务器执行该操作。当连接时适当更改连接参数。请注意账户名的主机部分必须允许你用multi_admin从你想要运行mysqld_multi的主机进行连接。·         如果你使用mysqld_safe来启动mysqld(例如,--mysqld=mysqld_safe),--pid-file选项很重要。每个mysqld应有自己的进程ID文件。使用mysqld_safe而不使用mysqld的好处是mysqld_safe“守护”其mysqld进程,如果用kill –9发送的信号或由于其它原因(例如分段故障)进程终止,则重启进程。请注意mysqld_safe脚本需要你从某个位置启动它。这说明运行mysqld_multi前你必须进入某个目录。如果启动时有问题,请参见mysqld_safe脚本。特别是要检查下列行:·                ----------------------------------------------------------------
    ·                MY_PWD=`pwd`
    ·                # Check if we are starting this relative (for the binary release)
    ·                if test -d $MY_PWD/data/mysql -a -f ./share/mysql/english/errmsg.sys -a \
    ·                -x ./bin/mysqld
    ·                ----------------------------------------------------------------
    参见5.1.3节,“mysqld_safe:MySQL服务器启动脚本”。上述行执行的测试应成功,否则你可能遇到了问题。·         每个mysqld的Unix套接字文件和TCP/IP端口号必须不同。·         你可能想要为mysqld使用--user选项,但为此你需要用Unix root用户运行mysqld_multi脚本。选项文件中有选项不要紧;如果你不是超级用户,并且你用自己的Unix账户重启mysqld进程,你只会得到警告。·         重要:确保mysqld进程启动所用Unix账户可以完全访问数据目录。不要使用Unix root账户,除非你知道你在做什么。·         非常重要:使用mysqld_multi前,确保理解传递给mysqld服务器的选项的含义以及你为什么想要独立的mysqld进程。应清楚 在相同的数据目录下使用多个mysqld服务器的危险。使用单独的数据目录,除非你知道你在做什么。在线程系统中,在相同的数据目录下启动多个服务器不会得到超性能。参见5.12节,“在同一台机器上运行多个MySQL服务器”。下面的示例显示了你如何设置选项文件来使用mysqld_multi。专门省去第1个和第5个[mysqldN]组来说明你的选项文件可以稍有不同。这样给你更大的灵活性。mysqld程序重启或停止的顺序由它们在选项文件中的顺序决定。# This file should probably be in your home dir (~/.my.cnf)
    # or /etc/my.cnf
    # Version 2.1 by Jani Tolonen
     
    [mysqld_multi]
    mysqld     = /usr/local/bin/mysqld_safe
    mysqladmin = /usr/local/bin/mysqladmin
    user       = multi_admin
    password   = multipass
     
    [mysqld2]
    socket     = /tmp/mysql.sock2
    port       = 3307
    pid-file   = /usr/local/mysql/var2/hostname.pid2
    datadir    = /usr/local/mysql/var2
    language   = /usr/local/share/mysql/english
    user       = john
     
    [mysqld3]
    socket     = /tmp/mysql.sock3
    port       = 3308
    pid-file   = /usr/local/mysql/var3/hostname.pid3
    datadir    = /usr/local/mysql/var3
    language   = /usr/local/share/mysql/swedish
    user       = monty
     
    [mysqld4]
    socket     = /tmp/mysql.sock4
    port       = 3309
    pid-file   = /usr/local/mysql/var4/hostname.pid4
    datadir    = /usr/local/mysql/var4
    language   = /usr/local/share/mysql/estonia
    user       = tonu
     
    [mysqld6]
    socket     = /tmp/mysql.sock6
    port       = 3311
    pid-file   = /usr/local/mysql/var6/hostname.pid6
    datadir    = /usr/local/mysql/var6
    language   = /usr/local/share/mysql/japanese
    user       = jani
    参见4.3.2节,“使用选项文件”。
      

  3.   

    你好,参考你的配置,好像快成功了
    有几个问题请教你socket = /tmp/mysql.sock2
    port = 3307
    pid-file = /usr/local/mysql/var2/hostname.pid2
    我是用 root 来登录的,为什么还存在权限的问题? pid文件也放在tmp的下面就可以了。另外我看那个  err 文件基本是OK了,怎么开启这两个实例?以及分别进入它们的数据库
      

  4.   

    恩,配置OK了
    请问怎么分别进入它们的MYSQL数据库呢?
      

  5.   

    不是用的不同的PORT吗? 连接的时候指定PORT就行了。
      

  6.   

    恩,你好
    mysql -uroot -p -P6666进入的还是默认的数据库查看监听的端口,6666和6667都存在。
    netstat -anp |grep 666
      

  7.   

    mysql --port=6666 -uroot -p -P6666