1.MySQL-5.0.40
1.1.Source Installation Overview(lines 74 of install-source)
系统默认可能会安装三个mysql的包: mysql-libs mysql mysql-devel 从下往上依赖关系。 |
- 源码包安装mysql View Code
#检查环境 rpm -aq | grep mysql rpm -ql mysql rpm -qf /etc/my.conf rpm -qc mysql-libs rpm -qR mysql-libs rpm -qd mysql rpm -qi mysql netstat -nlt find / -name mysql find / -name my.conf cat /etc/passwd | grep mysql cat /etc/group | rpm -qa | grep gcc rpm -qa | grep make ls /home 添加用户 groupadd -r mysql useradd -g mysql -M -r -s /sbin/nologin mysql 开始安装 vi INSTALL-SOURCE ./configure --prefix=/usr/local/mysql echo $? make echo $? make install echo $? 配置文件 cp support-files/my-medium.cnf /etc/my.conf 目录权限 cd /usr/local/mysql chown -R mysql . chgrp -R mysql . 初始化数据库 bin/mysql_install_db --user=mysql 开机启动 cp /support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld 安全启动服务/把数据库的数据文件定义到其他磁盘设备上 bin/mysqld_safe --user=mysql --datadir=/dell/mysql_data
1.2.Typical ‘configure’ Options(lines 265 of install-source)
- 配置 View Code
./configure --help ./configure -h #仅仅编译客户端程序 ./configure --without-server #默认安装的目录/usr/local(数据目录/usr/local/var)。可以改写为: ./configure --prefix=/usr/local/mysql ./configure --prefix=/usr/local/ --localstatedir=/usr/local/mysql/data #使用unix的套接字方式连接数据库: ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock #有gcc,没有c++库,可以使用gcc来作为c++的编译器: CC=gcc CXX=gcc ./configure ./configure --with-charset=gb2312 ./configure --with-charset=utf8 ./configure --with-charset=latin1(这个是默认值) ./configure --with-collation=latin1_swedish_ci(这个是排序方法的默认值) ./configure --with-extra-charsets=(空格分开) ./configure --with-extra-charsets=all #重新编译一个源码树时: rm config.cache make clean make dist
_____________
Mysql-5.1.72.tar.gz
安装方法跟上边的大同小异。
_____________
2.MySQL-5.5.22
2.1.Installing MySQL from Generic Binaries on Unix/Linux
系统默认可能会安装三个mysql的包: mysql-libs mysql mysql-devel 从下往上依赖关系。 |
- 二进制文件安装mysql View Code
#检查环境 rpm -aq | grep mysql rpm -ql mysql rpm -qf /etc/my.conf rpm -qc mysql-libs rpm -qR mysql-libs rpm -qd mysql rpm -qi mysql netstat -nlt find / -name mysql find / -name my.conf cat /etc/passwd | grep mysql cat /etc/group | rpm -qa | grep gcc rpm -qa | grep make ls /home #添加用户 groupadd mysql useradd -r -g mysql -M -s /sbin/nologin mysql #开始安装 cd /usr/local tar -zxvf …… cd mysql chown -R mysql . chgrp -R mysql . #初始化数据库 scripts/mysql_install_db --user=mysql chown -R root . chown -R mysql data #配置操作 cp support-files/my-medium.cnf /etc/my.cnf cp support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld #启动服务 bin/mysqld_safe --user=mysql --datadir=/dell/mysql_data
- my.cnf View Code
1 [mysqld] 2 basedir=/mysql/mysql 3 datadir=/mysql/mysql/data
2.2.Installing MySQL from Source
- 源码包安装mysql View Code
#检查环境 rpm -aq | grep mysql rpm -ql mysql rpm -qf /etc/my.conf rpm -qc mysql-libs rpm -qR mysql-libs rpm -qd mysql rpm -qi mysql netstat -nlt find / -name mysql find / -name my.conf cat /etc/passwd | grep mysql cat /etc/group | rpm -qa | grep gcc rpm -qa | grep make ls /home #添加用户 groupadd mysql useradd -r -g mysql -M -s /sbin/nologin mysql #配置、编译 ccmake .(先进行交互式配置) cmake . make make install cd /usr/local/mysql chown -R mysql . chgrp -R mysql . #初始化数据库 scripts/mysql_install_db --user=mysql chown -R root . chown -R mysql data cp support-files/my-medium.cnf /etc/my.cnf cp support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/rc.d/init.d/mysqld 启动服务 bin/mysqld_safe --user=mysql --datadir=/dell/mysql_data
2.3.To list the configuration options,use one of the following.
- 配置选项 View Code
cmake . -L# overview cmake . -LH# overview with help text cmake . -LAH# all params with help text ccmake .# interactive display make clean rm CMakeCache.txt
2.4.rpm
- To see all files in an RPM packet,run a command like this: View Code
rpm -qpl MySQL-server-VERSION.glibc23.i386.rpm rpm -ivh MySQL-server-VERSION.glibc23.i386.rpm rpm -ivh MySQL-client-VERSION.glibc23.i386.rpm # Start from a source RPM,run: rpmbuild --rebuild --clean MySQL-VERSION.src.rpm
2.5.安装Cmake-2.8.12.tar.gz
- cmakeView Code
vi Readme.txt ./bootstrap make make install
3.MySQL-5.5.34
3.1. Installing MySQL on Unix/Linux Using Generic Binaries
- 二进制包安装mysql View Code
#检查当前环境配置 rpm -aq | grep mysql rpm -ql mysql rpm -qf /etc/my.conf rpm -qc mysql-libs rpm -qR mysql-libs rpm -qd mysql rpm -qi mysql netstat -nlt find / -name mysql find / -name my.conf cat /etc/passwd | grep mysql cat /etc/group | rpm -qa | grep gcc rpm -qa | grep make #添加用户 groupadd mysql useradd -r -g mysql -M -s /sbin/nologin mysql cd /usr/local #开始安装 tar -zxvf …… cd mysql #设定目录权限 chown -R mysql . chgrp -R mysql . #初始化数据库 scripts/mysql_install_db --user=mysql #设定库文件目录权限 chown -R root . chown -R mysql data #添加配置文件 cp support-files/my-medium.cnf /etc/my.cnf cp support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld #启动服务 bin/mysqld_safe --user=mysql --datadir=/dell/mysql_data
3.2.Installing MySQL Using a Standard Source Distribution
- 源码包安装mysql View Code
rpm -aq | grep mysql rpm -ql mysql rpm -qf /etc/my.conf rpm -qc mysql-libs rpm -qR mysql-libs rpm -qd mysql rpm -qi mysql netstat -nlt find / -name mysql find / -name my.conf cat /etc/passwd | grep mysql cat /etc/group | rpm -qa | grep gcc rpm -qa | grep make ls /home groupadd mysql useradd -r -g mysql -M -s /sbin/nologin mysql cd mysql ccmake . #没有这一步也过去了 cmake . make make install cd /usr/local/mysql chown -R mysql . chgrp -R mysql . scripts/mysql_install_db --user=mysql chown -R root . chown -R mysql data cp support-files/my-medium.cnf /etc/my.cnf cp support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld bin/mysqld_safe --user=mysql --datadir=/dell/mysql_data
4.MySQL-5.6.36
二进制安装
View Code#添加用户 [root@tri blog]# groupadd -g 51 mysql [root@tri blog]# useradd -r -u 51 -g 51 -d /data02/blog/mysql_data -s /sbin/nologin mysql #开始安装 [root@tri local]# tar -xf /opt/data01/tars/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz [root@tri local]# ln -s mysql-5.6.36-linux-glibc2.5-x86_64/ mysql [root@tri local]# cd mysql [root@tri mysql]# chown -R mysql:mysql . [root@tri mysql]# scripts/mysql_install_db --user=mysql [root@tri mysql]# chown -R root . [root@tri mysql]# chown -R mysql data/ #标准启动 [root@tri mysql]# bin/mysqld_safe --user=mysql #直接启动 [root@tri mysql]# bin/mysqld_safe --user=mysql --bind-address=127.0.0.1 --port 3333 #解包后查看文件,编译时配置“-prefix=” [root@tri mysql]# vi docs/INFO_BIN CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql MYSQL_DATADIR:PATH=/usr/local/mysql/data #添加启动时打开服务 [root@tri mysql]# cp support-files/mysql.server /etc/init.d/mysql #打开上述文件(提示配置文件、主目录、数据目录) [root@tri mysql]# vi /etc/init.d/mysql # If you install MySQL on some other places than /usr/local/mysql, then you # have to do one of the following things for this script to work: # # - Run this script from within the MySQL installation directory # - Create a /etc/my.cnf file with the following information: # [mysqld] # basedir=<path-to-mysql-installation-directory> # - Add the above to any other configuration file (for example ~/.my.ini) # and copy my_print_defaults to /usr/bin # - Add the path to the mysql-installation-directory to the basedir variable # below. # # If you want to affect other MySQL variables, you should make your changes # in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files. # If you change base dir, you must also change datadir. These may get # overwritten by settings in the MySQL configuration files. basedir= datadir=
5.Mysql-5.7.28
- 二进制安装 View Code
shell> groupadd mysql shell> useradd -r -g mysql -s /bin/false mysql shell> cd /usr/local shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz shell> ln -s full-path-to-mysql-VERSION-OS mysql shell> cd mysql shell> mkdir mysql-files shell> chown mysql:mysql mysql-files shell> chmod 750 mysql-files shell> bin/mysqld --initialize --user=mysql shell> bin/mysql_ssl_rsa_setup shell> bin/mysqld_safe --user=mysql & # Next command is optional shell> cp support-files/mysql.server /etc/init.d/mysql.server
- 修改 root 密码1 View Code
shell> mysql -u root mysql> SET PASSWORD = PASSWORD('newpwd'); mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd'); mysql> select host,user,password from mysql.user;
- 修改root密码2 View Code
shell> mysql -u root mysql> UPDATE mysql.user SET password = PASSWORD('newpwd) -> WHERE user = 'root'; (没有这步,就得重启后才能生效) mysql> FLUSH PRIVILEGES; shell> mysqladmin -u root password "newpwd" shell> mysqladmin -u root -h host_name password "newpwd" mysqladmin 无法对127.0.0.1起作用。 shell> mysqladmin -u root -p shutdown
修改 anonymous 密码
View Code修改 anonymous 密码 shell> mysql -u root -p mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd'); shell> mysql -u root -p mysql> UPDATE mysql.user SET password = PASSWORD('newpwd') -> WHERE user = ''; mysql> FLUSH PRIVILEGES;
删除 anonymous 用户
View Code删除 anonymous 用户 shell> mysql -u root -p mysql> DROP USER ''@'localhost'; mysql> DROP USER ''@'host_name'; mysql> select host,user,password from mysql.user;
- 拒绝任意用户访问测试数据库 View Code
shell> mysql -u root -p mysql> DELETE FROM mysql.db WHERE db LIKE 'test%'; mysql> FLUSH PRIVILEGES; mysql> DROP DATABASE test; (* 再进一步,连测试库都干掉)
多实例的实现
实现1
- 编译不同配置的服务器,指定不同的 tcp/ip 端口 和 套接字 文件。 指定不同的 basedir,这会影响到 数据目录、日志文件、pid文件。 View Code
# 编译新的资源 cmake . -DMYSQL_TCP_PORT=3307 -DMYSQL_UNIX_ADDR= -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.31
实现2
- 新实例仅仅需要不同的端口和套接字之外,别无他求时。只需要指定不同的启动参数即可 View Code
/usr/local/mysql/bin/mysqld_safe --socket=/tmp/my02.cnf --port=3000 --datadir=/data/ /usr/local/mysql/bin/mysql -P3000 -uroot -p
指定新的:端口、socket文件、数据目录【最低要求】
- 选项:错误日志,PID 文件 View Code
# 路径跟 datadir 走 --log-error=develop-database.err --pid-file=db.pid
创建数据目录
- 新建 View Code
# 需要一个空目录 mkdir xxx chown mysql:mysql xxx # 创建数据目录 bin/mysqld --initialize --basedir=/usr/local/mysql --datadir=/xxx --user=mysql
- 拷贝 View Code
# 1.停止例程运行 # 2.拷贝数据目录
服务托管(chkconfig)
- 启动脚本 View Code
# 1.使用 support-files/mysql.server 进行编辑 cp mysql.server /etc/init.d/mysql.server chmod +x /etc/init.d/mysql.server chkconfig --add mysql.server chkconfig --level 345 mysql.server on
- 添加配置选项 View Code
# 在全局为其添加选项 vi /etc/my.cnf [mysqld] datadir=/usr/local/mysql/var socket=/var/tmp/mysql.sock port=3306 user=mysql [mysql.server] basedir=/usr/local/mysql
mysql.server 会同时读取 【mysqld】和【mysql.server】的配置信息。
RPM
-----------------------------
使用 RPM 包安装数据库
RPM 包可以是官方提供的,也可以是其他作者提供的;可能有所不同(文件结构)。
标准安装,需要 MySQL-server & MySQL-client 。(其他的包在标准安装中不需要)
4109 行有关于各种包(名称)代表含义的详细说明。(包对 CPU 是有选择的 4208 )
查看 RPM 包里的文件:
shell> rpm -qpl MySQL-server-VERSION.glibc23.i386.rpm
-----------------------------
* Red Hat Linux, Fedora, CentOS
root-shell> yum install mysql mysql-server mysql-libs root-shell> service mysqld start root-shell> chkconfig --levels 235 mysqld on
-----------------------------
Debian,Ubuntu,Kubuntu
root-shell> apt-get install mysql-client-5.1 mysql-server-5.1 root-shell> service mysql start | stop
-----------------------------
优化从编译个出色的mysqld开始
使用最好的编译器、和最佳的编译选项;使用静态模板编译。这个很重要,性能能提升10-30%。 直接在官网下载的二进制包,包含所有的字符集;自己编译可以选择需要的字符集。 Here is a list of some measurements that we have made: * If you link dynamically (without -static), the result is 13% slower on Linux. Note that you still can use a dynamically linked MySQL library for your client applications. It is the server that is most critical for performance. * For a connection from a client to a server running on the same host, if you connect using TCP/IP rather than a Unix socket file, performance is 7.5% slower. (On Unix, if you connect to the host name localhost, MySQL uses a socket file by default.) * For TCP/IP connections from a client to a server, connecting to a remote server on another host is 8% to 11% slower than connecting to a server on the same host, even for connections faster than 100Mb/s Ethernet. * When running our benchmark tests using secure connections (all data encrypted with internal SSL support) performance was 55% slower than with unencrypted connections. * On a Sun UltraSPARC-IIe, a server compiled with Forte 5.0 is 4% faster than one compiled with gcc 3.2. * On a Sun UltraSPARC-IIe, a server compiled with Forte 5.0 is 4% faster in 32-bit mode than in 64-bit mode. * Compiling on Linux-x86 using gcc without frame pointers (-fomit-frame-pointer or -fomit-frame-pointer -ffixed-ebp) makes mysqld 1% to 4% faster.
MySQL