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

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

安装

  • RPM
    优点:简单
    缺点:不灵活,缺少个性化设置
  • 二进制
    优点:优化版本
    缺点:安装比RPM麻烦
  • 源代码
    优点:个性化
    缺点:需要知道如何构建
# 创建必要的组和拥有者
groupadd mysql
useradd -g mysql mysql

# 下载解压
cd /usr/src
gunzip < /usr/src/mysql-VERSION.tar.gz | tar xvf -
cd mysql-VERSION

# 配置,生成并安装
./configure --prefix=/usr/local/mysql [other-configuration-flags]
make
make install

# 将MySQL配置文件(my.cnf)复制到其典型位置,并设置其所有关系
cp support-files/my-medium.cnf /etc/my.cnf
chown -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 shutdown
Enter 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)

# 查看一些非常有意义的统计信息,也可以使用LIKE
SHOW 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.sql
SHOW 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 variables
Enter 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 processlist
Enter password: 
+-------+------+-----------+----+---------+------+-------+------------------+
| Id    | User | Host      | db | Command | Time | State | Info             |
+-------+------+-----------+----+---------+------+-------+------------------+
| 95327 | root | localhost |    | Sleep   | 744  |       |                  |
| 95330 | root | localhost |    | Query   | 0    |       | show processlist |
+-------+------+-----------+----+---------+------+-------+------------------+

mysqldump

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

# 将本地服务器中所有数据库的表结构转储到文件output.sql
mysqldump -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
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值