Think before you speak, read before you think.

Category: MySQL

  • mysql绑定多个ip地址

    my.cnf中有选项bind-address=127.0.0.1,是说mysql server监听的是本地发来的请求,如果是任意主机都可以请求,则写为0.0.0.0,但是这样又不太安全。监听某ip,指定此ip地址即可,但是要保证mysql的user中有允许此ip访问,否则不能对数据库操作。那么是否可以在配置里只规定几个ip呢? 简单直接回答:不可能 请参考:http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_bind-address The MySQL server listens on a single network socket for TCP/IP connections. This socket is bound to a single address, but it is possible for an address to map onto multiple network interfaces. The default address is 0.0.0.0. To specify an address explicitly, use the –bind-address=addr option at server startup, where…

  • mysql主从复制

    大致思路:设置master端,用于复制的账户,锁表导入数据库,在slave中导入数据库,设置slave端 mysql主从复制是一种比较靠谱的备份方式,这里用最简单的,一个master,一个slave 12.34.56.789- Master Database 12.23.34.456- Slave Database 前提条件: 主从数据库大版本要一样,可以用mysql -V查看,我这里用的是mysql  Ver 14.14 Distrib 5.5.31 设置master端 配置文件vim /etc/mysql/my.cnf,mysql的bind-address只能绑一个特定的ip或0.0.0.0,我现在用的是0.0.0.0,即 bind-address = 0.0.0.0 在 [mysqld]段下为server-id设置一个独立的编号 server-id = 1 主从复制需要binary的log日志,将log_bin这一行取消注释 log_bin = /var/log/mysql/mysql-bin.log 设置要复制的数据库jpuyydb binlog_do_db = jpuyydb master的配置文件设置完了,重启mysql /etc/init.d/mysql restart 接下来在mysql中操作,mysql -u root -p,添加一个复制用的账户slave_user密码是password,这里的权限是可以复制所有数据库 GRANT select, replication client, replication slave *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘password’; 刷新权限 FLUSH PRIVILEGES;…

  • mysql 中的 show命令

    最早接触到的show,如show databases; show tables; 其实show还有更多的用法。 显示mysql中所有数据库的名称 show databases; 显示当前数据库中所有表的名称 show tables 或 show tables from database_name; 显示正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。 show processlist; 或 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间 show table status; 显示表中列名称,或者说是表的结构 show columns from table_name from database_name; 或 show columns from database_name.table_name; 显示一个用户的权限,显示结果类似于grant 命令 show grants for user_name@localhost; 显示表的索引 show index from table_name; 显示一些系统特定资源的信息,例如,正在运行的线程数量,mysql运行uptime(秒) show status; 显示系统变量的名称和值…

  • mysql数据库空间用满时,巧用软链接转移

    参考:http://www.webhostingtalk.com/showthread.php?t=1086919 对于一些做SEO的人来说,/var/lib/mysql 和 /var/www 是两个占用空间的大户,下面以数据库为例,将/var/lib/mysql下的数据库移动到较大的/home下,并使用软链接将/home/mysql 链接到/var/lib/mysql,实现充分利用空间的目的。 在这些网站都不在使用的时候,停用mysql,apache /etc/init.d/mysqld stop /etc/init.d/httpd stop 使用rsync完整的将数据拷贝(-a archive mode归档模式 -v verbos显示详细 ) rsync -av /var/lib/mysql /home/ 这个过程根据数据量的不同时间不同,数据很大的话建议使用screen 接下来看一下大小,如果以上命令都完全执行完的话,是不会出现什么问题的 du -sh /var/lib/mysql du -sh /home/mysql 将旧的/var/lib/mysql移走,随便移到什么地方,实再不需要删掉也行 mv /var/lib/mysql /var/lib/mysql-bak 创建软链接 ln -s /home/mysql /var/lib/mysql 之后一定要再次确认上面的软链接链接到对的地方,如果不正确mysql一启动就麻烦了。   #######ubuntu用户注意 begin####### 如果使用ubuntu下apt-get安装的mysql版本,还需如下操作 vim /etc/apparmor.d/usr.sbin.mysqld 将如下两行注释 /var/lib/mysql/ r, /var/lib/mysql/** rwk, 变更为(可能是因为apparmor不支持软链接) /home/mysql/ r, /home/mysql/** rwk, 重启apparmor…

  • 加大mysql的max_allowed_packet值

    今天在安装confluence的team calendars插件的时候,死活安装不上去,看日志文件提示 Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4521890 > 1048576). You can change this value on the server by setting the max_allowed_packet’ variable. 所以加大mysql的max_allowed_packet值 可以编辑my.cnf来修改,在[mysqld]段或者mysql的server配置段进行修改。 max_allowed_packet = 20M max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度 如果找不到my.cnf可以通过 mysql –help | grep my.cnf mysql根据配置文件会限制server接受的数据包大小。 有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。 查看当前配置 show VARIABLES like ‘%max_allowed_packet%’; 显示的结果为: +——————–+———+ | Variable_name | Value |…

  • mysql备份和还原数据库

    备份服务器上所有数据库,加上–opt表示采用优化(Optimize)方式。 mysqldump -uroot -ppasswd –opt –all-databases > allbackupfile.sql 或 mysqldump -uroot -ppasswd -A > allbackupfile.sql 备份指定数据库 mysqldump -uroot -ppasswd databasename > /tmp/dbbackup.sql 备份指定的表,写在要备份的库后面 mysqldump -uroot -ppasswd databasename table1 table2 > /tmp/tables.sql 还原MySQL数据库的命令(还原表就不用加表名了) mysql -hhostname -uusername -ppassword databasename < backup.sql 还原为utf-8 mysql -uusername -ppassword databasename –default-character-set=utf8 < backup.sql mysqldump 加 where mysqldump -uroot -ppasswd databasename table1…