前奏:

建议在Linux中使用RPM包来安装MySQL。MySQL RPM目前已经嵌入到SuSE Linux 7.3系统中,但是应当能在大多数支持rpm和使用glibc的Linux版本中工作。

MySQL AB不提供与具体平台相关的RPM;具体平台相关的RPM和通用RPM之间的区别是具体平台相关RPM为目标平台而构建,为动态连接。而通用RPM与Linux线程之间是静态连接。

注释:通常由其它供应商提供MySQL的RPM分发版。其特征和功能与MySQL AB所构建的不同,该手册中的指令不一定适合安装其它供应商提供的MySQL的RPM分发版。此时应咨询供应商的说明。

如果RPM文件有问题(例如,如果你收到错误“Sorry, the host 'xxxx' could not be looked up”)。

在大多数情况,你只需要安装MySQL-server和MySQL-client软件包来安装MySQL。在标准安装中不需要其它的包。如果你想要运行含更多功能的MySQL-Max服务器,还应当安装MySQL-Max RPM。必须先安装M MySQL-server RPM再安装该模块。

如果安装MySQL软件包时出现从属错误(例如,“error: removing these packages would break dependencies: libmysqlclient.so.10 is needed by ..”),你还应当安装包MySQL-shared-compat,其中包括两个向后兼容的共享库(MySQL 4.0为libmysqlclient.so.12,MySQL 3.23为libmysqlclient.so.10)。

许多Linux分发版包含了MySQL 3.23,通常动态连接应用程序以节省硬盘空间。如果这些共享库在单独的包内(例如,MySQL-shared),只需要安装这些包并升级MySQL服务器和客户端软件包(为静态连接,不依赖共享库)。对于包含与MySQL服务器相同软件包中的共享库的分发版(例如,Red Hat Linux),你可以安装3.23 MySQL-shared RPM,或使用MySQL-shared-compat包。

可以使用以下RPM包:

·         MySQL-server-VERSION.i386.rpm

MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。 注释:在MySQL 4.0.10之前,服务器RPM文件被称为MySQL-VERSION.i386.rpm。也就是说,名称中不含有-server。

·         MySQL-Max-VERSION.i386.rpm

MySQL-Max服务器。该服务器具有其它功能,这是MySQL-server RPM不具备的。你必须首先安装MySQL-server RPM,因为MySQL-Max RPM依赖于它。

·         MySQL-client-VERSION.i386.rpm

标准MySQL客户端程序。你可能总是要安装该软件包。

·         MySQL-bench-VERSION.i386.rpm

测试和基准。需要Perl和DBD::mysql模块。

·         MySQL-devel-VERSION.i386.rpm

库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要。

·         MySQL-shared-VERSION.i386.rpm

该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。

·         MySQL-shared-compat-VERSION.i386.rpm

该软件包包括MySQL 3.23和MySQL 4.0的共享库。如果你安装了应用程序动态连接MySQL 3.23,但是你想要升级到MySQL 4.0而不想打破库的从属关系,则安装该软件包而不要安装MySQL-shared。从MySQL 4.0.13起包含该安装软件包。

·         MySQL-embedded-VERSION.i386.rpm

嵌入式MySQL服务器库(从MySQL 4.0起)。

·         MySQL-VERSION.src.rpm

包含以前所有软件包的源码。可用来在其它架构上重建RPM(例如,Alpha或SPARC)。

要想看到RPM软件包内的所有文件(例如,MySQL-server RPM),运行:

shell> rpm -qpl MySQL-server-VERSION.i386.rpm

要想执行标准最小安装,运行:

shell> rpm -i MySQL-server-VERSION.i386.rpm
shell> rpm -i MySQL-client-VERSION.i386.rpm

要想只安装客户端软件包,运行:

shell> rpm -i MySQL-client-VERSION.i386.rpm

RPM提供在安装软件包前验证其完整性和真实性的功能。如果你要想了解关于该功能的更多信息。

 

服务器RPM将数据放入/var/lib/mysql目录。RPM还为mysql用户创建登录账户(如果还没有),用来运行MySQL服务器,并在/etc/init.d/创建相应条目,以便在引导时自动启动服务器。(这意味着如果你已经安装并且已经更改启动脚本,你可能要复制脚本,以便你安装新RPM时 不会丢掉脚本)。关于系统启动时如何自动启动MySQL的详细信息。

 

如果想要在旧的不支持/etc/init.d(直接或通过符号连接)初始化脚本的Linux分发版中安装MySQL RPM,你应当创建一个指向初始化脚本实际安装的位置的符号连接。例如,如果安装位置为/etc/rc.d/init.d,安装RPM前使用这些命令创建/etc/init.d,作为指向该位置的符号连接:

shell> cd /etc
shell> ln -s rc.d/init.d。

目前主要Linux分发版应当支持使用/etc/init.d的新目录布局,因为需要LSB(Linux标准基)兼容性。

如果你安装的RPM文件包括MySQL-server,安装后MySQLd服务器应当能启动并运行。你应当能使用MySQL启动。

公司有台游戏服务器,目前在测试阶段,这台用的是mysql数据库,今天就对mysql安装并测试了一下备份之类的简单操作。

一、对几个版本稍作了解:

第一个 MySQL Community Server,这个是免费版本!
第二个 MySQL Enterprise,这个是付费的,不过提供打电话技术支持。
第三个 MySQL Cluster,这个单独是没法用的,要在1或2的基础上用。当然用来平衡多台数据库的。
第四个 MySQL Workbench,这是个好东西,用来设计数据库的。类似于CA公司的ERWin Data Modeler。 

A、MySQL Community Server 社区版本 应该不提供官方技术支持

B、MySQL Enterprise Server MySQL企业版服务器
软件是最可靠、最安全、更新版本的MySQL企业级服务器数据库,它能够高性价比地提供电子商务、联机事务处理(OLTP)、千兆规模的数据仓库应用等。它支持ACID事务处理,能提供完整的提交、回滚、崩溃恢复和行级锁定功能。MySQL数据库因其易用性、可扩展性和高性能等特点,成为全球最流行的开源数据库。

C、MySQL Cluster 2台以上 mysql集群服务器

D、MySQL Workbench有两个版本:
   1、MySQL Workbench Community Edition(又叫MySQL Workbench OSS,社区版)
   2、MySQL Workbench Standard Edition(又叫MySQL Workbench SE,商业版)

MySQL Workbench OSS是在GPL证书下发布的开源社区版本,而MySQL Workbench SE则是按年收费的商业版本。其功能方面的差异见下表(不得不说,数据库/模型同步这一重要的功能竟然只在收费的MySQL Workbench SE中可用,而在DBDesigner4中这却是基本功能。

另外,MySQL GUI Tools,一个可视化界面的MySQL数据库管理控制台,提供了四个非常好用的图形化应用程序,方便数据库管理和数据查询。这些图形化管理工具可以大大提 高数据库管理、备份、迁移和查询效率,即使没有丰富的SQL语言基础的用户也可以应用自如。它们分别是:
MySQL Migration Toolkit:数据库迁移
MySQL Administrator:MySQL管理器
MySQL Query Browser:用于数据查询的图形化客户端
MySQL Workbench:DB Design工具
貌似无中文版,可以练练E文:)

 

二、初始安装完成的密码修改:
  在Linux中,有两个匿名账户均用于从本机连接。必须从本机进行连接,一个账户主机名应指定为localhost,另一个账户为实际的主机名或IP号。两个账户具有test数据库或其它以test开始的数据库的所有权限。这两个匿名用户账户,每个账户的用户名均为空。匿名账户没有密码,因此任何人可以使用匿名账户来连接MySQL服务器。
在Unix中使用PASSWORD的方法:

shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');
用服务器主机名替换第二个SET PASSWORD语句中的host_name。这是指定的user表中的root non-localhost记录的Host列名。如果你不知道是哪个主机名,在SET PASSWORD之前执行下面的语句:
mysql> SELECT Host, User FROM mysql.user;

为匿名账户指定密码的另一种方法是使用UPDATE直接修改用户表。用root连接服务器,运行UPDATE语句为相应user表记录的Password列指定一个值。在Windows和Unix中的过程是相同的。下面的UPDATE语句同时为两个匿名账户指定密码:

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = '';
mysql> FLUSH PRIVILEGES;
在user表中直接使用UPDATE更新密码后,必须让服务器用FLUSH PRIVILEGES重新读授权表。否则,重新启动服务器前,不会使用更改。

如果你宁愿删除匿名账户,操作方法是:

shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;

 

三、言归正传,说一下咋硬备份mysql数据库:

1、先用Less命令查看一下mysql的配置文件,以确定当前数据库所在的位置:
[root@LinuxTest ~]# less /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

我的测试机上的位置默认就在/var/lib/mysql目录内,如果安装时候末作特殊配置的话,默认就在这个地方。然后利用tar打包压缩
 
[root@LinuxTest ~]# tar -jcvf mysql.bz2 /var/lib/mysql
(在进行上面压缩操作之前务必停用服务:/etc/init.d/mysqld stop)

2、恢复时将原目录改名以备不测

[root@LinuxTest ~]# mv /var/lib/mysql /var/lib/mysql.old

解压备份的文档:tar -jxvf mysql.bz2
再启用服务/etc/init.d/mysqld start,以测试是否备份正常。

 

3.软备份的话,利用工具最为方便,推荐使用Navicat Lite工具(有收费和免费之分),不过免费的也可以用来备份/还原数据库了,上张图就明白了,超级简单,另外这款软件也可以操作 SQLite和PostgreSQL以及Oracle,实用!

Navicat Lite


4.用命令行进行软备份:


备份MySQL数据库的命令
mysqldump -hhostname -uroot -ppassword databasename > %database%.bak.sql


备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库
mysqldump --add-drop-table -uroot -ppassword databasename > %database%.bak.sql

直接将MySQL数据库压缩备份
mysqldump -hhostname -uroot -ppassword databasename | gzip > %database%.bak.sql.gz

我有个zabbix库,直接调用cron时,由于用日期做文件名,老是出错,后改调用shell脚本解决,如下:

mysqlbakNAME="/mysqlbak/zabbix"$(date +%Y%m%d-%H%M)

mysqldump -uzabbix -p'agcde' zabbix | gzip > $mysqlbakNAME.bak.sql.gz

备份MySQL数据库某个(些)表
mysqldump -hhostname -uroot -ppassword databasename specific_table1 specific_table2 > %database%.bak.sql

同时备份多个MySQL数据库
mysqldump -hhostname -uroot -ppassword –databases databasename1 databasename2 databasename3 > multi%database%.bak.sql

仅仅备份数据库结构
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structure%database%.bak.sql

备份服务器上所有数据库
mysqldump –all-databases > all%database%.bak.sql

还原MySQL数据库的命令
mysql -hhostname -uroot -ppassword databasename < %database%.bak.sql

还原压缩的MySQL数据库
gunzip <%database%.bak.sql.gz | mysql -uroot -ppassword databasename

将数据库转移到新服务器
mysqldump -uroot -ppassword databasename | mysql -host=*.*.*.* -C databasename

 

 

 


小插曲:

由于正式服务器上的mysql安装的有点问题
于是通过yum install mysql重装安装了下(这里直接安装的应该是mysql client工具,我的环境是CentOS的,如有错误,敬请指出)
安装完成后通过whereis mysql查看了一下mysql命令的相关路径,显示如下:

mysql: /bin/mysql /usr/bin/mysql /usr/lib/mysql /usr/include/mysql /usr/local/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

[root@Game ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4150
Server version: 5.1.44-log Source distribution
以上错误由于先执行了/bin/mysql的命令缘故,通过&ldquo;/bin/mysql -V&rdquo; 和 &ldquo;/usr/bin/mysql -V&rdquo;发现两个安装的版本不一样,后一个/usr/bin/mysql是通过yum安装自动生成的,可以正常使用。结果如下:

[root@Game ~]# /usr/bin/mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@Game ~]# /usr/bin/mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4153
Server version: 5.1.44-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.