MySQL读书笔记-安装初始化操作

来源:互联网 发布:龙舌兰推荐 知乎 编辑:程序博客网 时间:2024/06/01 18:12

导言:本文主要记录MySQL在Linux服务器上安装时,一些关键操作和步骤。

安装

  • RPM
    优点:简单
    缺点:不灵活,缺少个性化设置
  • 二进制
    优点:优化版本
    缺点:安装比RPM麻烦
  • 源代码
    优点:个性化
    缺点:需要知道如何构建
# 创建必要的组和拥有者groupadd mysqluseradd -g mysql mysql# 下载解压cd /usr/srcgunzip < /usr/src/mysql-VERSION.tar.gz | tar xvf -cd mysql-VERSION# 配置,生成并安装./configure --prefix=/usr/local/mysql [other-configuration-flags]makemake install# 将MySQL配置文件(my.cnf)复制到其典型位置,并设置其所有关系cp support-files/my-medium.cnf /etc/my.cnfchown -R mysql .chgrp -R mysql .# 安装MySQL数据库scripts/mysql_install_db --user=mysql# 更新安装权限chown -R root .chown -R mysql data

设置MySQL管理员密码

默认情况下,root用户的密码为空,在安装完成后需要立刻设置root密码。

mysql -u root mysql

进入MySQL客户端,执行以下命令来改变root用户的密码。

mysql> SET PASSWORD FOR root@localhost=PASSWORD('secret');

启动和停止MySQL

MySQL服务器守护进程通过位于INSTALL-DIR/bin目录的一个程序来控制。

  • 在Linux中启动MySQL

负责启动MySQL守护进程的脚本名为mysqld_safe,位于INSTALL-DIR/bin目录。此脚本只能由拥有足够执行权限的用户执行,一般为root或mysql组的成员。mysqld_safe脚本实际上是包装mysqld服务器守护进程的包装器,提供了直接调用mysqld所没有的特性,如运行时日志和出现错误时的自动重启。

./bin/mysqld_safe --user=mysql &
  • 在Linux中停止MySQL

虽然MySQL服务器守护进程只能由拥有必要文件系统权限的用户启动,却可以由拥有MySQL权限数据库中指定的适当权限的用户停止。此权限一般只留给MySQL root用户(注意,不要和操作系统的root用户混淆)。

mysqladmin -u root -p shutdownEnter password: ******

配置和优化MySQL

除非特别指定,在每次启动MySQL服务器守护进程时使用一组默认的配置设置。下面介绍一些常用的配置和优化。

  • 查看MySQL的配置参数
mysqladmin -u root -p variables# 或者登陆MySQL客户端后执行mysql> SHOW VARIABLES;# 通过LIKE子句查看单个变量的值,例如,查看默认的存储引擎是什么mysql> SHOW VARIABLES LIKE 'storage_engine';+----------------+--------+| Variable_name  | Value  |+----------------+--------+| storage_engine | InnoDB |+----------------+--------+1 row in set (0.00 sec)# 查看一些非常有意义的统计信息,也可以使用LIKESHOW STATUS
  • 管理连接负载

优化的MySQL服务器能够同时处理许多连接,每个连接都必须由MySQL主线程接收并委托给一个新线程,但是这个任务不是立即就能完成。back_log参数确定在主线程处理新连接时允许排队的连接数,默认值为50。

  • 设置数据目录位置

将MySQL数据目录放在非标准的位置(例如,另一个磁盘分区)是一种常见的做法。通过datadir选项可以重新定义此路径。

./bin/mysqld_safe --datadir=/data/mysql --user=mysql &

注意:需要将mysql表的定义(存储在DATADIR/mysql中)复制或移动到此新位置,因为MySQL的数据库以文件形式存储,所以可以使用通常的操作系统命令(例如,mv和cp)来完成。

  • 设置默认的存储引擎

指定如下选项之后,所有后续表的创建将自动使用MEMORY引擎,除非指定了其他表引擎。

./bin/mysqld_safe --default-table-type=memory
  • 自动执行SQL命令
./bin/mysqld_safe --init_file=/usr/local/mysql/scripts/mysqlinitcmds.sql &
  • 设置最大允许的并发连接数

max_connections参数确定并发数据库连接的最大数,默认设置为100。

mysql> show status like '%max%';+--------------------------+-------+| Variable_name            | Value |+--------------------------+-------+| Innodb_row_lock_time_max | 0     || Max_used_connections     | 7     || Tc_log_max_pages_used    | 0     |+--------------------------+-------+3 rows in set (0.00 sec)
  • 设置MySQL的通信端口

默认情况下,MySQL在端口3306通信,但是,可以通过port参数重新配置以监听其他任何端口。

my.cnf文件

除了通过mysqld_safe启动MySQL守护进程时通过参数选项来修改MySQL配置,还可以通过修改my.cnf配置来实现配置修改。启动时,MySQL将在一些目录中查找my.cnf文件,每个目录将确定在其中声明的参数的作用域。

  • /etc/my.cnf是全局配置文件
  • DATADIR/my.cnf是服务器特定的配置
  • –defaults-extra-file=name,这个文件由给出的文件名指定,包括绝对路径
  • ~/.my.cnf是用户特定的配置

MySQL在启动时会尝试从上述各个位置读取配置文件,如果存在多个配置文件,后面读取的参数将覆盖之前的参数。虽然可以创建自己的配置文件,不过应当基于5个预配置的my.cnf文件之一来创建,这个5个文件都由MySQL分发包提供。这些模板位于INSTALL-DIR/support-files。

MySQL客户端

MySQL提供了很多使用的客户端工具。

mysql客户端

mysql客户端可以采用交互模式非交互模式

# 交互模式# 注意,密码不要包含在命令行中,否则会被记录到历史命令里,有安全风险 mysql -h hostname -u username -p -D databasename# 非交互模式(批处理模式)# 向数据库导入模式和数据,通过<操作符使mysql客户端使用/path/to/file的内容来执行文本文件中的SQL命令mysql [options] < /path/to/file

非交互模式下的一个例子:监视服务器上发生的慢查询数量

# mysqlmon.sqlSHOW STATUS LIKE "slow_queries";# 类似下面的输出mysql> SHOW STATUS LIKE "slow_queries";+---------------+-------+| Variable_name | Value |+---------------+-------+| Slow_queries  | 0     |+---------------+-------+1 row in set (0.01 sec)# 在crontab中执行如下命令0 3 * * * mysql -u monitor < mysqlmon.sql | mail -s "Slow queries" gerry@example.com

mysqladmin客户端

此客户端用于完成一些管理任务。比如,创建和删除数据库,监视服务器状态,关闭MySQL服务器守护进程等。

# 查看服务器变量及其值root@gerryyang:~# mysqladmin -u root -p variablesEnter password: +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+| Variable_name                                     | Value                                                                                                                  |+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+| auto_increment_increment                          | 1                                                                                                                      || auto_increment_offset                             | 1                                                                                                                      || autocommit                                        | ON                                                                                                                     || automatic_sp_privileges                           | ON                                                                                                                     || back_log                                          | 50           ......+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+  # 使用processlist命令显示所有正在运行的MySQL服务器进程列表root@gerryyang:~# mysqladmin -u root -p processlistEnter password: +-------+------+-----------+----+---------+------+-------+------------------+| Id    | User | Host      | db | Command | Time | State | Info             |+-------+------+-----------+----+---------+------+-------+------------------+| 95327 | root | localhost |    | Sleep   | 744  |       |                  || 95330 | root | localhost |    | Query   | 0    |       | show processlist |+-------+------+-----------+----+---------+------+-------+------------------+

mysqldump

此客户端用来从MySQL服务器中导出现有的表数据表结构,或者二者都导出。

# 将本地服务器中所有数据库的表结构转储到文件output.sqlmysqldump -u root -p --all-databases --no-data > output.sql# 转储一个数据库corporate的数据mysqldump -u root -p --no-create-info corporate > output.sql# 同时转储corporate数据库中两个表的结构和数据# 在每个`CREATE`语句前都包括了`DROP TABLE`语句,当需要重复地重新创建存在的数据库时特别有用,可以防止尝试创建已经存在的表导致的错误mysqldump -u root -p --add-drop-table corporate product staff > output.sql
0 0
原创粉丝点击