Mysql的安装方式有三种:RPM包、二进程包和源码包。
RPM
二进制
源码
优点
安装简单,适合初学者学习使用
安装简单;可以安装到任何路径下,灵活性好;一台服务器可以安装多个MySQL
在实际安装的操作系统进行可根据需要定制编译,最灵活;性能最好;一台服务器可以安装多个MySQL
缺点
需要单独下载客户端和服务器;安装路径不灵活,默认路径不能修改,一台服务器只能安装一个MySQL
已经经过编译,性能不如源码编译得好;不能灵活定制编译参数
安装过程较复杂;编译时间长
文件布局
/usr/bin(客户端程序和脚本)
/usr/sbin(mysqld服务器)/var/lib/mysql(日志文件和数据库)/usr/share/doc/packages(文档)
/usr/include/mysql(包含(头)文件)
/usr/lib/mysql(库文件)/usr/share/mysql(错误消息和字符集文件)/usr/share/sql-bench(基准程序)
bin(客户端程序和mysqld服务器)
data(日志文件和数据库)docs(文档和ChangeLog)include(包含(头)文件)lib(库文件)
scripts (mysql_install_db脚本,用来安装系统数据库)
share/mysql(错误消息文件)
sql-bench(基准程序)
bin(客户端程序和脚本)include/mysql(包含(头)文件)
info(Info格式的文档)lib/mysql(库文件)
libexec(mysqld服务器)、share/mysql(错误消息文件)
sql-bench(基准程序和crash-me测试)
var(数据库和日志文件)
摘自深入浅出MySQL
1、配置环境和创建用户
<code>[root@rhel6 ~]</code><code># mkdir /opt/mysql</code>
<code>[root@rhel6 ~]</code><code># mkdir /mysqldata</code>
<code>[root@rhel6 ~]</code><code># groupadd mysql</code>
<code>[root@rhel6 ~]</code><code># useradd -r -g mysql -s /bin/flase mysql</code>
<code>[root@rhel6 ~]</code><code># chown mysql:mysql /opt/mysql</code>
<code>[root@rhel6 ~]</code><code># chown mysql:mysql /mysqldata</code>
<code>--关闭selinux</code>
<code>[root@rhel6 ~]</code><code># vi /etc/selinux/config </code>
<code>SELINUX=disabled</code>
<code>--配置环境变量</code>
<code>[root@rhel6 scripts]</code><code># vi ~/.bash_profile </code>
<code>--添加下面两条</code>
<code>export</code> <code>MYSQL_PATH=</code><code>/opt/mysql/mysql5</code><code>.6.18</code>
<code>export</code> <code>PATH=$PATH:$MYSQL_PATH</code><code>/bin</code>
<code>[root@rhel6 scripts]</code><code># source ~/.bash_profile</code>
2、上传并解压安装包
<code>[root@rhel6 ~]</code><code># cd /opt/mysql/</code>
<code>[root@rhel6 mysql]</code><code># ls</code>
<code>mysql-advanced-5.6.18-linux-glibc2.5-x86_64.</code><code>tar</code><code>.gz</code>
<code>[root@rhel6 mysql]</code><code># tar -zxvf mysql-advanced-5.6.18-linux-glibc2.5-x86_64.tar.gz </code>
<code>mysql-advanced-5.6.18-linux-glibc2.5-x86_64</code><code>/bin/mysql_convert_table_format</code>
<code>mysql-advanced-5.6.18-linux-glibc2.5-x86_64</code><code>/bin/mysql_client_test</code>
<code>mysql-advanced-5.6.18-linux-glibc2.5-x86_64</code><code>/bin/mysqlhotcopy</code>
<code>mysql-advanced-5.6.18-linux-glibc2.5-x86_64</code><code>/bin/mysqladmin</code>
<code>mysql-advanced-5.6.18-linux-glibc2.5-x86_64</code><code>/bin/msql2mysql</code>
<code>......</code>
<code>[root@rhel6 mysql]</code><code># mv mysql-advanced-5.6.18-linux-glibc2.5-x86_64 mysql5.6.18</code>
<code>[root@rhel6 mysql]</code><code># ll</code>
<code>total 306412</code>
<code>drwxr-xr-x 13 root root 4096 Nov 13 20:38 mysql5.6.18</code>
<code>-rw-r--r-- 1 root root 313754429 Nov 13 20:37 mysql-advanced-5.6.18-linux-glibc2.5-x86_64.</code><code>tar</code><code>.gz</code>
<code>[root@rhel6 mysql]</code><code># chown -R mysql:mysql mysql5.6.18/</code>
<code>drwxr-xr-x 13 mysql mysql 4096 Nov 13 20:38 mysql5.6.18</code>
<code>-rw-r--r-- 1 root root 313754429 Nov 13 20:37 mysql-advanced-5.6.18-linux-glibc2.5-x86_64.</code><code>tar</code><code>.gz</code>
3、安装mysql
<code>[root@rhel6 mysql]</code><code># cd /opt/mysql/mysql5.6.18/support-files/</code>
<code>[root@rhel6 support-files]</code><code># ls</code>
<code>binary-configure magic my-default.cnf mysqld_multi.server mysql-log-rotate mysql.server solaris</code>
<code>[root@rhel6 support-files]</code><code># cd /opt/mysql/mysql5.6.18/scripts/</code>
<code>[root@rhel6 scripts]</code><code># ls</code>
<code>mysql_install_db</code>
<code>[root@rhel6 scripts]</code><code># ./mysql_install_db --user=mysql --basedir=/opt/mysql/mysql5.6.18 --datadir=/mysqldata</code>
<code>WARNING: The host </code><code>'rhel6'</code> <code>could not be looked up with </code><code>/opt/mysql/mysql5</code><code>.6.18</code><code>/bin/resolveip</code><code>.</code>
<code>This probably means that your libc libraries are not 100 % compatible</code>
<code>with this binary MySQL version. The MySQL daemon, mysqld, should work</code>
<code>normally with the exception that host name resolving will not work.</code>
<code>This means that you should use IP addresses instead of hostnames</code>
<code>when specifying MySQL privileges !</code>
<code>Installing MySQL system tables...2016-11-13 20:42:18 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation </code><code>for</code> <code>more</code> <code>details).2016-11-13 20:42:18 1421 [Note] InnoDB: Using atomics to ref count buffer pool pages</code>
<code>OK</code>
<code>Filling help tables...2016-11-13 20:42:21 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation </code><code>for</code> <code>more</code> <code>details).</code>
<code>To start mysqld at boot </code><code>time</code> <code>you have to copy</code>
<code>support-files</code><code>/mysql</code><code>.server to the right place </code><code>for</code> <code>your system</code>
<code>PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !</code>
<code>To </code><code>do</code> <code>so, start the server, </code><code>then</code> <code>issue the following commands:</code>
<code> </code><code>/opt/mysql/mysql5</code><code>.6.18</code><code>/bin/mysqladmin</code> <code>-u root password </code><code>'new-password'</code>
<code> </code><code>/opt/mysql/mysql5</code><code>.6.18</code><code>/bin/mysqladmin</code> <code>-u root -h rhel6 password </code><code>'new-password'</code>
<code>Alternatively you can run:</code>
<code> </code><code>/opt/mysql/mysql5</code><code>.6.18</code><code>/bin/mysql_secure_installation</code>
<code>which</code> <code>will also give you the option of removing the </code><code>test</code>
<code>databases and anonymous user created by default. This is</code>
<code>strongly recommended </code><code>for</code> <code>production servers.</code>
<code>See the manual </code><code>for</code> <code>more</code> <code>instructions.</code>
<code>You can start the MySQL daemon with:</code>
<code> </code><code>cd</code> <code>. ; </code><code>/opt/mysql/mysql5</code><code>.6.18</code><code>/bin/mysqld_safe</code> <code>&</code>
<code>You can </code><code>test</code> <code>the MySQL daemon with mysql-</code><code>test</code><code>-run.pl</code>
<code> </code><code>cd</code> <code>mysql-</code><code>test</code> <code>; perl mysql-</code><code>test</code><code>-run.pl</code>
<code>Please report any problems at http:</code><code>//bugs</code><code>.mysql.com/</code>
<code>The latest information about MySQL is available on the web at</code>
<code> </code><code>http:</code><code>//www</code><code>.mysql.com</code>
<code>Support MySQL by buying support</code><code>/licenses</code> <code>at http:</code><code>//shop</code><code>.mysql.com</code>
<code>New default config </code><code>file</code> <code>was created as </code><code>/opt/mysql/mysql5</code><code>.6.18</code><code>/my</code><code>.cnf and</code>
<code>will be used by default by the server when you start it.</code>
<code>You may edit this </code><code>file</code> <code>to change server settings</code>
<code>WARNING: Default config </code><code>file</code> <code>/etc/my</code><code>.cnf exists on the system</code>
<code>This </code><code>file</code> <code>will be </code><code>read</code> <code>by default by the MySQL server</code>
<code>If you </code><code>do</code> <code>not want to use this, either remove it, or use the</code>
<code>--defaults-</code><code>file</code> <code>argument to mysqld_safe when starting the server</code>
可以看到安装完成后mysql会给出一些提示、建议。
4、复制相关文件
<code>[root@rhel6 scripts]</code><code># cp /opt/mysql/mysql5.6.18/support-files/mysql.server /etc/init.d/mysqld</code>
<code>[root@rhel6 scripts]</code><code># cp /opt/mysql/mysql5.6.18/support-files/my-default.cnf /etc/my.cnf </code>
<code>cp</code><code>: overwrite `</code><code>/etc/my</code><code>.cnf'? </code><code>yes</code>
注意不要使用系统自带的/etc/my.cnf文件,否则启动mysql服务时会报错。
Starting MySql.. ERROR! The server quit without updating PID file(/var/mysql/data/rhel6.pid).
5、修改参数
<code>[root@rhel6 scripts]</code><code># vi /etc/init.d/mysqld</code>
<code>##修改下面两个参数如下</code>
<code>basedir=</code><code>/opt/mysql/mysql5</code><code>.6.18</code>
<code>datadir=</code><code>/mysqldata</code>
6、加入开机启动
<code>[root@rhel6 scripts]</code><code># chkconfig --levels 235 mysqld on</code>
<code>[root@rhel6 scripts]</code><code># chkconfig --list mysqld</code>
<code>mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off</code>
7、启动mysql服务
<code>[root@rhel6 scripts]</code><code># service mysqld start</code>
<code>Starting MySQL. SUCCESS!</code>
8、连接mysql
<code>[root@rhel6 scripts]</code><code># mysql -uroot</code>
<code>Welcome to the MySQL monitor. Commands end with ; or \g.</code>
<code>Your MySQL connection </code><code>id</code> <code>is 1</code>
<code>Server version: 5.6.18-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial)</code>
<code>Copyright (c) 2000, 2014, Oracle and</code><code>/or</code> <code>its affiliates. All rights reserved.</code>
<code>Oracle is a registered trademark of Oracle Corporation and</code><code>/or</code> <code>its</code>
<code>affiliates. Other names may be trademarks of their respective</code>
<code>owners.</code>
<code>Type </code><code>'help;'</code> <code>or </code><code>'\h'</code> <code>for</code> <code>help. Type </code><code>'\c'</code> <code>to </code><code>clear</code> <code>the current input statement.</code>
<code>mysql> show databases;</code>
<code>+--------------------+</code>
<code>| Database |</code>
<code>| information_schema |</code>
<code>| mysql |</code>
<code>| performance_schema |</code>
<code>| </code><code>test</code> <code>|</code>
<code>4 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>
9、mysql的帮助
<code>1.用“?contents”命令来显示所有可供查询的的分类</code>
<code>mysql> ? contents</code>
<code>You asked </code><code>for</code> <code>help about help category: </code><code>"Contents"</code>
<code>For </code><code>more</code> <code>information, </code><code>type</code> <code>'help <item>'</code><code>, where <item> is one of the following</code>
<code>categories:</code>
<code> </code><code>Account Management</code>
<code> </code><code>Administration</code>
<code> </code><code>Compound Statements</code>
<code> </code><code>Data Definition</code>
<code> </code><code>Data Manipulation</code>
<code> </code><code>Data Types</code>
<code> </code><code>Functions</code>
<code> </code><code>Functions and Modifiers </code><code>for</code> <code>Use with GROUP BY</code>
<code> </code><code>Geographic Features</code>
<code> </code><code>Help Metadata</code>
<code> </code><code>Language Structure</code>
<code> </code><code>Plugins</code>
<code> </code><code>Procedures</code>
<code> </code><code>Storage Engines</code>
<code> </code><code>Table Maintenance</code>
<code> </code><code>Transactions</code>
<code> </code><code>User-Defined Functions</code>
<code> </code><code>Utility</code>
<code>mysql> help data types</code>
<code>You asked </code><code>for</code> <code>help about help category: </code><code>"Data Types"</code>
<code>topics:</code>
<code> </code><code>AUTO_INCREMENT</code>
<code> </code><code>BIGINT</code>
<code> </code><code>BINARY</code>
<code> </code><code>BIT</code>
<code> </code><code>BLOB</code>
<code> </code><code>BLOB DATA TYPE</code>
<code> </code><code>BOOLEAN</code>
<code> </code><code>CHAR</code>
<code> </code><code>CHAR BYTE</code>
<code> </code><code>DATE</code>
<code> </code><code>DATETIME</code>
<code> </code><code>DEC</code>
<code> </code><code>DECIMAL</code>
<code> </code><code>DOUBLE</code>
<code> </code><code>DOUBLE PRECISION</code>
<code> </code><code>ENUM</code>
<code> </code><code>FLOAT</code>
<code> </code><code>INT</code>
<code> </code><code>INTEGER</code>
<code> </code><code>LONGBLOB</code>
<code> </code><code>LONGTEXT</code>
<code> </code><code>MEDIUMBLOB</code>
<code> </code><code>MEDIUMINT</code>
<code> </code><code>MEDIUMTEXT</code>
<code> </code><code>SET DATA TYPE</code>
<code> </code><code>SMALLINT</code>
<code> </code><code>TEXT</code>
<code> </code><code>TIME</code>
<code> </code><code>TIMESTAMP</code>
<code> </code><code>TINYBLOB</code>
<code> </code><code>TINYINT</code>
<code> </code><code>TINYTEXT</code>
<code> </code><code>VARBINARY</code>
<code> </code><code>VARCHAR</code>
<code> </code><code>YEAR DATA TYPE</code>
<code>mysql> help int</code>
<code>Name: </code><code>'INT'</code>
<code>Description:</code>
<code>INT[(M)] [UNSIGNED] [ZEROFILL]</code>
<code>A normal-size integer. The signed range is -2147483648 to 2147483647.</code>
<code>The unsigned range is 0 to 4294967295.</code>
<code>URL: http:</code><code>//dev</code><code>.mysql.com</code><code>/doc/refman/5</code><code>.6</code><code>/en/numeric-type-overview</code><code>.html</code>
本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1872429,如需转载请自行联系原作者