两种安装方式
- 自动安装
# sudo apt-get install mysql-server
# sudo apt-get install mysql-client
# sudo apt-get install libmysqlclient-dev
- 编译安装 (http://www.mysql.com)
安装ncurses (http://ftp.gnu.org/pub/gnu/ncurses)
ncurses是字符终端下屏幕控制的基本库。可能很多新开发的程序都不使用了,不过如果要编译一些老程序,还经常遇得到。
# ./configure --prefix=/usr --with-shared --without-debug
# make
# sudo make install
# tar zxvf mysql-5.1.63.tar.gz
# ./configure --prefix=/usr/local/mysql --localstatedir=/data/mysql/data --with-plugins=innobase --without-debug --enable-assembler --enable-thread-safe-client --enable-profiling --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=utf8,gbk --with-pthread --with-plugins=ndbcluster --with-mysqld-user=mysql --without-embedded-server --with-big-tables --with-unix-socket-path=/usr/local/mysql/sock/mysql.sock
# make
# sudo make install
配置数据库
- 生成mysql用户数据库和表文件
# ln -s /usr/local/mysql/bin/mysql_install_db /sbin/mysql_install_db
# mysql_install_db
- 生成my.conf
# groupadd mysql
# useradd -g mysql mysql
# cp support-files/my-large.cnf /etc/my.cnf
# cp /etc/my.cnf /etc/my.cnf.bak
- 修改权限
# cd /usr/local
# chmod 750 mysql -R
# chgrp mysql mysql //变更文件与目录的所属群组
- 加速mysql
# cd /usr/local/mysql/libexec
# cp mysqld mysqld.old
# strip mysqld //用strip剥离的mysqld二进制,生成的二进制速度会快4%
- 配置mysql
# vi /etc/my.cnf
在[client]下添加
character-set-server = utf8 (老版本用default-character-set)
在[mysqld]下添加
character-set-server = utf8
在log-bin下加上保留时间
expire_logs_days = 7
- 启动mysql
# ln -s /usr/local/mysql/bin/mysqld_safe /sbin/mysqld_safe //安全启动
# mysqld_safe &
# mysqld_safe --user=mysql &
# ln -s /usr/local/mysql/bin/my_print_defaults /sbin/my_print_defaults
# ln -s /usr/local/mysql/bin/mysqld_multi /sbin/mysqld_multi
# mysqld_multi --user=mysql &
如果报错:
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
就是/data/mysql权限问题
修改方法:
# chown mysql:mysql mysql/ -R
- 制作启动文件
# cp support-files/mysql.server /etc/init.d/mysqld
# chmod 700 /etc/init.d/mysqld
# chkconfig --add mysqld //检查,设置系统的各种服务
# chkconfig --level 345 mysqld on
- 为了mysql安全
更改 MYsql的bind-address监听地址,让MySQL只守候在127.0.0.1上,这样从Internet上就无法直接访问数据库了
# vi /etc/init.d/mysqld
将:$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file &
修改为:$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1 &
- 收尾工作
# ln -s /usr/local/mysql/bin/mysql /sbin/mysql //登录
# ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin //设置密码
# ln -s /usr/local/mysql/bin/mysqldump /sbin/mysqldump //数据导出
# ln -s /usr/local/mysql/bin/mysql_secure_installation /sbin/mysql_secure_installation //一些附加配置
- 注意
my.cnf中,如果在[mysqld]的段中加上一句:skip-grant-tables
那么mysql无需密码即可登录
如果在查询数据库的时候,频繁操作一个比较大的表的时候,出现如下错误:
Mysql mysql lost connection to server during query
修改办法:在mysql配置文件[myslqd]下面添加一行设置skip-name-resolve(需要重启mysql服务)
如果多次连接数据库,但其实使用的都是同一个连接,出现如下错误:
MySQL server has gone away
修改办法:在my.cnf文件中添加或者修改 wait_timeout=2880000