<p><span>MySQL</span><span>是一种</span>开放源代码<span>的关系型</span>数据库管理<span>系统(RDBMS),<span>虽然功能未必很强大,但因它的免费开源而广受欢迎。</span></span></p> <p><span><span>此次,接着上一篇《</span></span><a id="cb_post_title_url" href="http://www.cnblogs.com/alylee/archive/2013/05/03/LinuxInit_CDevelSetup.html">CentOs minimal安装和开发环境部署</a>》,讲下Linux环境mysql的安装、初始化配置、以及参数优化,中间会穿插在实际操做过程当中遇到的新知识扩展。有些是承接上面的知识,若是不太清楚,能够到上一篇去看下。</p> <p>1、安装准备</p> <p>下载获得安装包很简单。</p> <p>一、rpm安装:A、在linux下使用wget获取 B、在虚拟机所在的宿主机windows下,在网络上下载Rpm安装包,而后经过以前咱们配置的samba共享目录拷贝到centos下。</p> <p>单独下载要注意你须要的rpm包:</p> <div class="cnblogs_code"> <pre>MySQL-server-<span>5.1</span>.x-<span>0</span>.i386.rpm <span>//</span><span>服务端</span> MySQL-client-<span>5.1</span>.x-<span>0</span>.i386.rpm <span>//</span><span>客户端 </span> MySQL-devel-<span>5.1</span>.x-<span>0</span>.i386.rpm <span>//</span><span>开发包<br />...</span></pre> </div>html
<p>二、yum 在线安装:使用CentOs的Yum(若是有特定的Mysql版本需求,要肯定你的Yum库里有须要的mysql版本)</p>前端
<div class="cnblogs_code"> <pre> Yum (Yellow dog Updater, Modified)是一个基于rpm包管理的字符前端软件包管理器。可以从指定服务器自动下载rpm包而且安装,处理依赖性关系,而且一次安装全部依赖的软件包,无须繁琐地一次次下载、安装。<br /> 简单认识下几个操做:<br /> yum -y install samba #安装samba,“-y”接受全部,不用手动一个个去确认每一步。<br /> yum remove samba #卸载samba<br /> yum info installed #列出系统中<span style="text-decoration: underline">全部安装过的</span>rpm包<br /> yum list samba #列出资源库中<span style="text-decoration: underline">指定的</span>能够安装或更新以及已经安装的rpm包<br /> yum info samba #列出资源库中<span style="text-decoration: underline">指定的</span>能够安装或更新以及已经安装的rpm包的信息<br /> yum search samba #搜索匹配指定字符的rpm包 </pre> </div>mysql
<p>2、安装Mysql</p>linux
<p>检测当前系统是否已经安装了mysql :运行下面的命令,若是已经安装过,会显示mysql的版本信息。</p>sql
<div class="cnblogs_code"> <pre>rpm -qa|<span style="color: #0000ff">grep</span> mysql </pre> </div>数据库
<p>若是已经安装过mysql,可是不是本身须要的版本,好比须要高版本的mysql对事件的支持等,怎么办?删除呗!注意,这可能会删除一些相关的依赖库而影响到其余软件,不过能够从新安装。</p>windows
<div class="cnblogs_code"> <pre><span style="color: #0000ff">yum</span> remove mysql-server mysql-devel mysql-client #删除mysql的server、client、以及devel</pre> </div>centos
<p>  一、rpm安装:</p>安全
<div class="cnblogs_code"> <pre>rpm -ivh MySQL-server-<span style="color: #800080">5.1</span>.x-<span style="color: #800080">0</span><span style="color: #000000">.i386.rpm #安装服务端(x:你下载的对应版本号) rpm </span>-ivh MySQL-client-<span style="color: #800080">5.1</span>.x-<span style="color: #800080">0</span><span style="color: #000000">.i386.rpm #安装客户端 rpm </span>-ivh MySQL-devel-<span style="color: #800080">5.1</span>.x-<span style="color: #800080">0</span>.i386.rpm #安装开发包 </pre> </div>服务器
<p>   二、yum安装:</p>
<div class="cnblogs_code"> <pre><span style="color: #0000ff">yum</span> -y <span style="color: #0000ff">install</span> mysql-<span style="color: #000000">server #安装服务器端 </span><span style="color: #0000ff">yum</span> -y <span style="color: #0000ff">install</span> mysql-<span style="color: #000000">client #安装客户端 </span><span style="color: #0000ff">yum</span> -y <span style="color: #0000ff">install</span> mysql-devel #安装开发包</pre> </div>
<p>  这里注意:</p>
<p>A、根据你的开发环境须要,你能够选择对应的rpm包。你能够在命令行,使用"<span style="color: #333300">yum search mysql"搜索与mysql有关的安装包,从中选择你须要的。若是你记不住名字也能够这样搜索下。</span></p>
<div class="cnblogs_code"> <pre><span style="color: #0000ff">yum</span> search mysql</pre> </div>
<p> <span style="color: #333300">  <img alt="" src="http://images.cnitblog.com/blog/313639/201305/04001206-2425cffdf6794cefac832f8ff6186731.jpg" /></span></p>
<p><span style="color: #333300">B、上面列出rpm包名字和简介,还能够经过yum info获取具体rpm包的具体的版本信息</span></p>
<div class="cnblogs_code"> <pre><span style="color: #0000ff">yum</span> <span style="color: #0000ff">info</span> mysql-<span style="color: #000000">server #列出mysql-server版本信息 </span><span style="color: #0000ff">yum</span> <span style="color: #0000ff">info</span> mysql-<span style="color: #000000">client </span><span style="color: #0000ff">yum</span> <span style="color: #0000ff">info</span> mysql-<span style="color: #000000">devel
#或者 </span><span style="color: #0000ff">yum</span> <span style="color: #0000ff">info</span> mysql* #一个命令一会儿列出mysql相关的全部rpm安装包版本信息</pre>
</div>
<p> <span style="color: #333300"> <img alt="" src="http://images.cnitblog.com/blog/313639/201305/04002240-ea4961dda62941679d9ae36e3dcabce1.jpg" /></span></p>
<p> </p>
<p>3、Mysql初始配置</p>
<p>刚刚安装好的mysql须要进行必定的配置,才适合使用。</p>
<p>一、设置Mysql开机启动</p>
<div class="cnblogs_code"> <pre><span style="color: #000000"><span style="color: #ff00ff">chkconfig --list mysql #查看mysql服务开机启动状态</span><br />mysql          0:off1:off2:on3:on4:on5:on6:off<br /></span></pre>
<pre><span style="color: #000000"><span style="color: #ff00ff">#若是2--5都是on,就不须要下面的命令了<br />chkconfig mysql on 设置mysql服务开机启动</span> </span></pre>
</div>
<p>chkconfig,若是不知道是干什么的,那如今来了解下</p>
<div class="cnblogs_code"> <pre><span style="color: #000000"><span style="color: #ff00ff">chkconfig</span>,用来更新(启动或中止)和查询系统服务的运行级信息。 使用语法: chkconfig [</span>--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/<span style="color: #000000">reset]</span><span style="color: #000000"> eg: chkconfig </span>--<span style="color: #000000">list [name]:显示全部运行级系统服务的运行状态信息(on或off)。若是指定了name,那么只显示指定的服务在不一样运行级的状态。 chkconfig </span>--<span style="color: #000000">add name:增长一项新的服务 chkconfig </span>--del name:删除服务<span style="color: #000000"> chkconfig [</span>--level levels] name:设置某一服务在指定的运行级是被启动,中止仍是重置。<br /><br /><br /><span style="color: #ff00ff">level</span>,运行级别,能够用“runlevel”这个命令查询到当前系统的运行级别,也能够“init 0-6”切换运行级别</pre>
<pre><span>0:表示关机 1:单用户模式 2:无网络链接的多用户命令行模式 3:有网络链接的多用户命令行模式 4:不可用 5:带图形界面的多用户模式 6:从新启动 </span></pre>
</div>
<p>二、Mysql服务的启动/关闭/重启</p>
<div class="cnblogs_code"> <pre>service mysql start/shutdown/restart/<span style="color: #000000">status #启动、关闭、重启、查看服务当前状态 或者 </span>/etc/rc.d/init.d/mysqld start/shutdown/restart/status #启动、关闭、重启、查看服务当前状态</pre> </div>
<p>三、安全设置</p>
<div class="cnblogs_code"> <pre><span style="color: #000000">⑴、刚安装时,root用户是空的,须要修改密码: ①mysqladmin </span><span style="color: #808080">-</span>u root password ‘new<span style="color: #808080">-</span><span style="color: #000000">password’ ②或者,登录后,直接修改用户表里的密码 mysql </span><span style="color: #808080">-</span><span style="color: #000000">u root #用root用户登陆 </span><span style="color: #800000; font-weight: bold">1</span>. <span style="color: #0000ff">select</span> <span style="color: #ff00ff">user</span>,host,password <span style="color: #0000ff">from</span> mysql.<span style="color: #ff00ff">user</span><span style="color: #000000">; 查看数据库的用户 </span><span style="color: #800000; font-weight: bold">2</span>. <span style="color: #0000ff">use</span><span style="color: #000000"> mysql #切换到mysql表 </span><span style="color: #0000ff">set</span> password <span style="color: #0000ff">for</span> root<span style="color: #008000">@localhost</span><span style="color: #808080">=</span>password(<span style="color: #ff0000">'</span><span style="color: #ff0000">123456</span><span style="color: #ff0000">'</span><span style="color: #000000">); #设置指定域名下root帐号的密码 </span><span style="color: #0000ff">set</span> password <span style="color: #0000ff">for</span> root<span style="color: #008000">@域名</span><span style="color: #808080">=</span>password(<span style="color: #ff0000">'</span><span style="color: #ff0000">123456</span><span style="color: #ff0000">'</span><span style="color: #000000">); </span><span style="color: #800000; font-weight: bold">3</span><span style="color: #000000">.或者,更常见的sql操做: </span><span style="color: #0000ff">update</span> <span style="color: #ff00ff">user</span> <span style="color: #0000ff">set</span> password<span style="color: #808080">=</span>password(<span style="color: #ff0000">'</span><span style="color: #ff0000">123456</span><span style="color: #ff0000">'</span>) <span style="color: #0000ff">where</span> <span style="color: #ff00ff">user</span><span style="color: #808080">=</span>‘root<span style="color: #008000">@localhost</span><span style="color: #000000">’;<br /> ⑵、匿名用户是危险的<br /> </span><span style="color: #0000ff">delete</span> <span style="color: #0000ff">from</span> mysql.<span style="color: #ff00ff">user</span> <span style="color: #0000ff">where</span> <span style="color: #ff00ff">user</span><span style="color: #808080">=</span><span style="color: #ff0000">''</span>; #删除匿名用户<br />⑶、退出mysql: <span style="color: #0000ff">exit</span>;</pre> </div>
<p>四、测试</p>
<p>登录:</p>
<div class="cnblogs_code"> <pre><span style="color: #ff0000">[</span><span style="color: #ff0000">root@dream ~</span><span style="color: #ff0000">]</span>mysql <span style="color: #808080">-</span><span style="color: #000000">u root #匿名登陆,已设置密码或者删除了匿名用户,登录失败 </span><span style="color: #ff0000">[</span><span style="color: #ff0000">root@dream ~</span><span style="color: #ff0000">]</span>mysql <span style="color: #808080">-</span>u root <span style="color: #808080">-</span><span style="color: #000000">p #经过密码用root登陆 Enter password: #在这里输入密码123456 </span><span style="color: #ff0000">[</span><span style="color: #ff0000">root@dream ~</span><span style="color: #ff0000">]</span>mysql <span style="color: #808080">-</span>u root <span style="color: #808080">-</span>p <span style="color: #800000; font-weight: bold">123456</span> #显示密码登录</pre> </div>
<p>sql操做:</p>
<div class="cnblogs_code"> <pre>mysql<span style="color: #808080">></span> <span style="color: #0000ff">create</span> <span style="color: #0000ff">database</span><span style="color: #000000"> test; #创建名为test的数据库,这个库安装后就有的。 mysql</span><span style="color: #808080">></span><span style="color: #000000"> show databases; #查看系统已存在的数据库 mysql</span><span style="color: #808080">></span> <span style="color: #0000ff">use</span><span style="color: #000000"> test #切换到指定的数据库 mysql</span><span style="color: #808080">></span> <span style="color: #0000ff">create</span> <span style="color: #0000ff">table</span> tbl_user(ID <span style="color: #0000ff">int</span>, Name <span style="color: #0000ff">varchar</span>(<span style="color: #800000; font-weight: bold">50</span><span style="color: #000000">)); #创建表 mysql</span><span style="color: #808080">></span><span style="color: #000000"> show tables; #查看数据库中已存在的表 mysql</span><span style="color: #808080">></span> <span style="color: #0000ff">drop</span> <span style="color: #0000ff">table</span><span style="color: #000000"> tbl_user; #删除表 mysql</span><span style="color: #808080">></span><span style="color: #0000ff">drop</span> <span style="color: #0000ff">database</span><span style="color: #000000"> test; #删除名为test数据库 mysql</span><span style="color: #808080">></span> <span style="color: #0000ff">exit</span> #退出MySQL服务器</pre> </div>
<p> </p>
<p>五、NaviCat远程链接的权限问题</p>
<pre>远程登陆会出现以下提示: </pre>
<div class="cnblogs_code"> <pre><span style="color: #800000; font-weight: bold">1103</span> <span style="color: #808080">-</span> host xxx.xxx.xxx.xx <span style="color: #0000ff">is</span> <span style="color: #808080">not</span> allowed <span style="color: #0000ff">to</span> connec <span style="color: #0000ff">to</span><span style="color: #000000"> this mysql server. 或 </span><span style="color: #800000; font-weight: bold">1045</span> <span style="color: #808080">-</span> Access denied <span style="color: #0000ff">for</span> <span style="color: #ff00ff">user</span> <span style="color: #ff0000">'</span><span style="color: #ff0000">root</span><span style="color: #ff0000">'</span>@<span style="color: #ff0000">'</span><span style="color: #ff0000">192.168.1.11</span><span style="color: #ff0000">'</span> (using password: YES).</pre> </div>
<p>解决方案:</p>
<div class="cnblogs_code"> <pre><span style="color: #808080">//</span><span style="color: #000000">mysql访问 </span><span style="color: #0000ff">grant</span> <span style="color: #808080">all</span> <span style="color: #0000ff">privileges</span> <span style="color: #0000ff">on</span> <span style="color: #808080">*</span>.<span style="color: #808080">*</span> <span style="color: #0000ff">to</span> <span style="color: #ff0000">'</span><span style="color: #ff0000">root</span><span style="color: #ff0000">'</span>@<span style="color: #ff0000">'</span><span style="color: #ff0000">%</span><span style="color: #ff0000">'</span> identified <span style="color: #0000ff">by</span> <span style="color: #ff0000">'</span><span style="color: #ff0000">123456</span><span style="color: #ff0000">'</span><span style="color: #000000">;
#其实就是权限问题,设置root在全部域名(</span>%<span style="font-family: 宋体">表示任何地址</span>)登录时,赋给全部权限,密码123456。根据须要可设置更严格些。</pre>
</div>
<p> </p>
<p>4、数据库和表的导入、导出</p>
<p>1.导出整个的数据库:<span style="color: #ff6600">mysqldump -u 用户名 -p 数据库名 > 导出的文件名</span></p>
<p><span style="color: #ff00ff">mysqldump -u root -p db_test >/home/bak/dbtest.sql</span></p>
<p>2.导出指定数据库中的一个表:<span style="color: #ff6600">mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名</span></p>
<p><span style="color: #ff00ff">mysqldump -u root -p db_test tbl_user >/home/bak/test_user.sql</span></p>
<p>3.只导出一个结构(struct):加上-d参数</p>
<p><span>mysqldump -u root -p -d –add-drop-table db_test >/home/bak/dbtest_struct.sql</span></p>
<p><span>4.只导出一个数据(data):加上-t参数</span></p>
<p><span>mysqldump -u root -p -t –add-drop-table db_test >/home/bak/dbtest_struct.sql</span></p>
<div class="cnblogs_code"> <pre><span style="color: #000000">⑴.只导出表结构 -d mysqldump </span><span style="color: #808080">-</span>h 192.<span style="color: #800000; font-weight: bold">168.1</span>.<span style="color: #800000; font-weight: bold">11</span> <span style="color: #808080">-</span>u root <span style="color: #808080">-</span>p 123456 <span style="color: #808080">-</span>d –<span style="color: #0000ff">default</span><span style="color: #808080">-</span><span style="color: #0000ff">character</span><span style="color: #808080">-</span><span style="color: #0000ff">set</span><span style="color: #808080">=</span>utf8 test <span style="color: #808080">></span><span style="color: #000000">sql.sql
⑵.只导出数据 -t mysqldump </span><span style="color: #808080">-</span>h 192.<span style="color: #800000; font-weight: bold">168.1</span>.<span style="color: #800000; font-weight: bold">11</span> <span style="color: #808080">-</span>u root <span style="color: #808080">-</span>p 123456 <span style="color: #808080">-</span>t –<span style="color: #0000ff">default</span><span style="color: #808080">-</span><span style="color: #0000ff">character</span><span style="color: #808080">-</span><span style="color: #0000ff">set</span><span style="color: #808080">=</span>utf8 test <span style="color: #808080">></span>sql.sql<br /><br />注:①.<span style="color: #ff00ff">-d</span> 没有数据(不导出数据,只导出数据结构和表结构)</pre>
<p>  <span style="color: #ff00ff">-t</span> 不导出结构,只要数据</p>
<p><span style="color: #ff00ff">–add-drop-table</span> 在每一个create语句以前增长一个drop table</p>
<p><span style="color: #ff00ff">–default-character-set</span> 设置字符集</p>
<p><span style="color: #ff00ff"><span style="color: #000000">②.</span></span>这里的导出文件没有加路径,就是相对路径,当前的目录下的文件。</p>
<p><span style="color: #ff00ff"><span style="color: #000000">③.</span></span>密码是显示输入的,跟在-p后面。</p> </div>
<p>5.导入数据库:source 命令</p>
<div class="cnblogs_code"> <pre><span style="color: #ff0000">[</span><span style="color: #ff0000">root@dream ~</span><span style="color: #ff0000">]</span> mysql <span style="color: #808080">-</span>u root <span style="color: #808080">-</span><span style="color: #000000">p #登录 mysql</span><span style="color: #808080">></span><span style="color: #0000ff">use</span><span style="color: #000000"> test; mysql</span><span style="color: #808080">></span>source <span style="color: #808080">/</span>home<span style="color: #808080">/</span>bak<span style="color: #808080">/</span>db_test.sql</pre> </div>
<p> </p>
<p><a href="http://my.oschina.net/alylee/blog/187507">欢迎转载,条件容许请注明出处,谢谢</a>! </p>
<p>做者:<a href="http://www.cnblogs.com/alylee/" target="_blank">子韦一</a></p>