安装环境:Linux服务器CentOS 5.5
安装版本:mysql-5.5.8.tar.gz
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
#先下载cmake
wgethttp://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
#安装cmake
tar xvzf cmake-2.8.4.tar.gz
./configure
make
make install
#创建mysql用户名及组
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
#下载最新的mysql
wgetftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.5/mysql-5.5.10.tar.gz
或 wgetftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.5/mysql-5.5.40.tar.gz
#解压
tar zxvf mysql-5.5.10.tar.gz
cd mysql-5.5.10
#开始编译并安装
/usr/local/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DMYSQL_USER=mysql -DWITH_DEBUG=0
make && make install
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
cp support-files/my-small.cnf /etc/my.cnf
chown mysql:mysql /etc/my.cnf
执行下面的
/usr/local/webserver/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
在/etc/my.cnf 打开下面的InnoDB配置以减少内存即可:
default-storage-engine=MyISAM
server-id = 1
innodb_buffer_pool_size = 21M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
启动:带--user=mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql
参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
-DINSTALL_DATADIR=/usr/local/mysql/data //数据库存放目录
-DDEFAULT_CHARSET=utf8 //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all //安装所有扩展字符集
-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
注意事项:
重新编译时,需要清除旧的对象文件和缓存信息。
# make clean
# rm -f CMakeCache.txt
# rm -rf /etc/my.cnf
6)、创建系统数据库的表
# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql
7)、设置权限启动
设置环境变量:
# vi /root/.bash_profile
在PATH=$PATH:$HOME/bin添加参数为:
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
#source /root/.bash_profile
手动启动MySQL:
# cd /usr/local/mysql
# ./bin/mysqld_safe --user=mysql & //启动MySQL,但不能停止
启动日志写在此文件下:/usr/local/mysql/data/localhost.err
关闭MySQL服务
# mysqladmin -u root -p shutdown //这里MySQL的root用户还没有配置密码,所以为空值。
通过脚本启动MySQL:
# ln -s /usr/local/mysql/support-files/mysql.server /usr/local/mysql
# mysql.server start //启动mysql
# mysql.server stop //停止mysql
在引导时启动MySQL :
# ln -s /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
# ln -s /usr/local/mysql/mysql.server /etc/rc.d/init.d/mysql
# cd /etc/rc.d/init.d
# chkconfig --add mysql //配置是否自动启动, chkconfig --del mysql 可删除
# chmod +x /etc/rc.d/init.d/mysql //添加如执行权限
TipsLinux运行级别:
分成了8种运行级别,其中常用7种。可在/etc/inittab文件中设置。
0 - halt
1 - Single user mode
2 - Multiuser, without NFS
3 - Full multiuser mode
4 - unused
5 - x11
6 - reboot
默认设置为:id:3:initdefault:
每一种动行级别都有自已独立的文件夹,例如:
/etc/rc.d/rc3.d 表示运行级别为3的配置都存放在这个文件侠中。
#
chkconfig--list |grep mysql //检查看是否设置为自启动
mysql 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
表示: 运行级别2、3、4、5都会自动启动mysql
另一种手动配置自已启动:
可能会出现这种情况,如果你试图在/etc/rc.d/rc3.d目录下运行../init.d/mysql start可能会收到如下错误
Starting MySQLCouldn't find MySQL server (./bin/mysqld_safe[失败]
可见mysql.server内部引用了一个相对路径./bin/mysqld_safe,所以这样就导致失败。
解决办法:在/etc/my.cnf 配置文件中添加:
basedir = /usr/local/mysql
8)、修改MySQL的root用户的密码:
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql>use mysql;
mysql>desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; //为root添加远程连接的能力。
mysql>update user set Password = password('xxxxxx') where User='root';
mysql>select Host,User,Password from user where User='root';
mysql>flush privileges;
mysql>exit
重新登录:mysql -u root -p
注意事项:
<1>、MySQL5.5 默认使用InnoDB作为存储引擎,所以可以不设置DWITH_MYISAM_STORAGE_ENGINE值
参考:
如何打开MySQL中root账户的远程登录
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
注意%对应的密码,如果不相同,可以通过 update user set Password = password('xxxxxx') where User='root'; 修改。
同时注意防火墙是否已关闭或者添加例外。
# /etc/rc.d/init.d/iptables stop
关闭或开启Linux/CentOS上的防火墙
导出数据库生成SQL脚本
mysqldump -h 192.168.200.18 -u root -p TestDB > TestDB.sql
<2>、测试mysql守护进程。
#cd /usr/local/mysql/mysql-test ;
#perl mysql-test-run.pl
<3>、注意事项:
Tostart mysqld at boot time you havetocopy
support-files/mysql.servertotherightplaceforyour system
PLEASE REMEMBERTOSETA PASSWORDFORTHE MySQL rootUSER!
Todo so, start the server,thenissue the following commands:
/usr/local/mysql/bin/mysqladmin-u root password'new-password'
/usr/local/mysql/bin/mysqladmin-u root-h localhost password'new-password'
Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation
which will also give you theoptionofremoving the test
databasesandanonymoususercreatedbydefault. Thisis
strongly recommendedforproduction servers.
See the manualformore instructions.
You can start the MySQL daemonwith:
cd/usr/local/mysql ;/usr/local/mysql/bin/mysqld_safe&<SPAN style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5 !important; MARGIN: 0
Linux下解决MySQL无法远程连接问题
在搭建MySQL过程中,默认的Root账户是只能在本机访问的,如果想通过其他机器访问Linux上的MySQL数据库,必然需要进行一番配置,接下来我来介绍一下我的解决方案。首先,用Root账户从命令行进入MySQL,成功后按如下方法配置
1.下方语句为对应账户赋予可以访问的权限,‘用户名’和‘密码’部分填写所需的
grant all privileges on *.* to '用户名' @'%' identified by '密码' with grant option;
2.写入权限
flush privileges;
3.重启数据库
service mysqld restart
在保证网络正在的情况下,我发现进行如上配置后还是无法远程连接Linux的MySQL数据库。后来我发现原来是防火墙在作怪,这里仍然有两种解决办法,一种在配置文件里添加上3306端口的例外,一种直接关闭防火墙.