MySQL server 数据库三种安装方式对比:
1、rpm方式
mysql5.7版本以前只安装mysql-server和mysql-client两个RPM包即可。
从mysql5.7版本之后mysql-community-client依赖于mysql-community-libs
mysql-community-server依赖于mysql-community-common共计需要安装4个RPM包
2、二进制通用方式
在SUSE上,mysql -uroot -p登录时候提示:
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
mysql5.7官方文档提示:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
SLES 11: as of MySQL 5.7.19, the Linux Generic tarball package format is EL6 instead of EL5. As a side effect, the MySQL client bin/mysql needs libtinfo.so.5.
A workaround is to create a symlink, such as ln -s libncurses.so.5.6 /lib64/libtinfo.so.5 on 64-bit systems or ln -s libncurses.so.5.6 /lib/libtinfo.so.5 on 32-bit systems.
※注意:SLES 11:从MySQL 5.7.19开始,Linux通用tar包的格式是EL6而不是EL5。以致于MySQL客户端bin/mysql需要libtinfo.so.5。在Centos6.X源码安装可能需要的依赖包:ncurses-devel,bison cmake,gcc-c++,make,zlib-devel
在Centos7.X系统上可能需要的依赖包:autoconf包,否则初始化库的时候可能会失败提示错误:
FATAL ERROR: please install the following Perl modules before executing
使用Oracle官方编译使用参数(mysql_release)为MySQL二进制包的模式编译,编译需要libaio-devel包
如:cmake -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ../mysql-VERSI
1、创建用户和库目录
useradd mysql -s /sbin/nologin -M
2、编译安装:避免破坏mysql源码,可以新建一个其他路径,
mkdir /home/mysqlbuild
cd /home/mysqlbuild
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql56 \
-DMYSQL_DATADIR=/data/3306 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql56/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 ../mysql5.5.36
make -j && make install
3、--初始化数据库
scripts/mysql_install_db --basedir=/usr/local/mysql56 --datadir=/data/3306 --defaults-file=/usr/local/mysql56/etc/my.cnf --user=mysql
4、--设置环境变量命令启动
echo 'export PATH=$PATH:/usr/local/mysql56/bin' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
或者在profile文件末尾增加两行 vi /etc/profile
PATH=/usr/local/mysql56/bin:/usr/local/mysql56/lib:$PATH
export PATH
# 使PATH搜索路径立即生效:
source /etc/profile
5、--设置权限
cd /usr/local/mysql56
chown -R mysql:mysql . #设置database所有者设为mysql,所属组为mysql
#设置数据路径的属主属组为mysql 权限为775
chown -R mysql:mysql /data/3306(或chown -R mysql /data/3306,chgrp -R mysql /data/3306)
chmod -R 700 /data/3306/ (或chmod -R go-rwx /data/3306/ )
6、--手动启动MySQL数据库
mkdir /usr/local/mysql56/etc/
mv /usr/local/mysql56/my.cnf /usr/local/mysql56/etc/my.cnf
mysqld_safe --defaults-file=/usr/local/mysql56/etc/my.cnf --user=mysql &
7、--关闭数据库
mysqladmin -uroot -p shutdown (※当socket文件在编译时指定的默认位置,即basedir路径下)
mysqladmin -uroot -p shutdown -S /data/3306/mysql.sock(当socket文件变换位置,需指定socket位置关闭)
当socket删除或者不见了,只能通过建立的TCP/IP连接来代替,可以在连接至本地服务器时可以通过利用--protocol=tcp选项或者把主句值指定为127.0.0.1,而非localhost(因为在Unix里与localhost连接默认都是通过一个Unix域套接字文件实现的,即XXX.sock,如果套接字文件被删除,则无法利用它来建立连接,而127.0.0.1是一个IP地址,它指向的是本地主机的回环接口,因此它会显示地强制使用TCP/IP连接,而不会使用套接字连接)
mysqladmin -uroot -p shutdown--protocol=tcp
mysqladmin -uroot -p shutdown -h127.0.0.1
Centos6.X系统设置系统服务启动方式:
8、--将mysql服务添加至系统服务启动
cp support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
9、--系统命令方式启动
service mysql start|stop|restart|status
Centos7.X系统设置系统服务启动方式:
vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PrivateTmp=true
ExecStart=/usr/local/mysql56/support-files/mysql.server start
ExecReload=/usr/local/mysql56/support-files/mysql.server restart
ExecStop=/usr/local/mysql56/support-files/mysql.server stop
PIDFile=/data/3306/xiaofeng.pid