Mysql启动选项和配置文件Mysql启动方法
下边的启动命令都须要依赖在Linux环境下配置的Mysql环境变量
vi/etc/profile
在文件末尾加上Mysql的安装路径(演示中mysql配置在/usr/local/mysql-5.7.26下,这个路径须要依照自己的环境而定)
exportPATH=/usr/local/mysql-5.7.26/bin/:$PATH
更新文件后刷新配置文件,不然不能立刻生效
source/etc/profile
mysqld
mysqld是一个可执行文件,就代表着Mysql服务器程序,执行这个文件可以直接启动一个服务器进程。
假如非root用户可以用如下形式启动,指定启动时读取的配置文件。
mysqld --defaults-file=/etc/my.cnf &
root用户须要加入启动参数(mysql由于安全问题不让root用户直接启动,所以须要加入启动参数强制使用root帐号启动)。
mysqld --defaults-file=/etc/my.cnf --user=root &
mysqld_safe
mysqld_safe是一个启动脚本,它会间接调用mysqld,并且都会顺带启动一个监控进程linux手机软件,这个监控进程在服务器挂了的时侯,可以手动重启服务,另外这个脚本会将服务器程序的错误信息以及确诊信息重定向到某个文件中记录错误日志。
可以不指定默认配置文件,命令如下
mysqld_safe --defaults-file=/etc/my.cnf &
mysqld_multi
mysqld_multi可以启动多个mysql数据库实例,这儿不做阐述。
mysql.server
在mysq的安装目录或许还有一个文件夹support-files,具体目录是/usr/local/mysql-5.7.26/support-files,上面的mysql.server也是一个启动脚本,这个脚本会间接调用mysqld_safe脚本,执行命令如下
### 路径依照自己的mysql安装路径来
cd /usr/local/mysql-5.7.26/support-files
./mysql.server start|stop
假如给这个路径指定了软联接
ln-s/usr/local/mysql-5.7.26/support-files/mysql.server/etc/init.d/mysql
这么启动命令可以简化为
service mysql stop/start
Mysql启动方法选项
Mysql服务在启动时就可以指定一些启动参数,如之前讨论过的Mysql服务端和顾客端的联接形式有TCP/IP、命名管线和共享显存、Unix域套接字文件,假如顾客端启动时满足如下几种情况,就是和服务端采用域套接字文件通讯。
假如顾客端指定-h前面接的是IP地址,即使是127.0.0.1那也就是采用TCP/IP联接,这么这都是顾客端去操作的,假如是服务端严禁采用TCP/IP通讯应当怎样去做呢?
root用户采用如下命令linux启动计划任务,非root用户不须要--user=root
mysqld --user=root --skip-networking &
顾客端操作
### 采用unix域套接字文件通信 正常
[root@test ~]# mysql -uroot -p
[root@test ~]# mysql -hlocalhsot -uroot -p
### 采用TCP/IP连接,直接拒绝
[root@test ~]# mysql -h127.0.0.1 -uroot -p
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
又如指定数据库储存引擎,在Mysql中默认是InnoDB,我们可以通过启动选项更改
### 非root用户去除--user=root选项
mysqld --user=root --default-storage-engine=MyISAM
顾客端操作
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> CREATE TABLE test(
-> id INT
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> show create table test;
+-------+----------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
`id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------+
创建后的数据库操作引擎变为MyISAM,配置生效。
综上Mysql假如存在多个启动指令可以采用**--启动选项1=值1--启动选项2=值2...--启动选项n=值n**,配置更改启动项。
Mysql启动指令诸多,其它指令可以通过命令**mysqld--verbose--help**查看。
选项的长方式和短方式
在myql中似乎仍然有分辨长方式命令和短方式命令,并且我们在使用时并没有注意,对照如下
须要注意的是长联接后面是两个横杠--,短联接只有一个-,另外长联接指令和值之前须要有空格,短联接可以紧挨到不须要空格。
### 长连接形式
mysql --host 127.0.0.1 --user root --port 3306 --password
### 短连接形式
mysql -h127.0.0.1 -uroot -P3306 -p
Mysql启动配置文件
采用Mysql启动方法选项其实是便捷linux学习,但也带来的一些问题,假若启动选项参数过多造成启动命令毫无可读性而言,启动选项配置的参数只对当前启动的服务生效,也就是假如上次重启所有的启动参数将被还原不会被记录,所以为了将这种启动参数保存,我们就须要一个配置文件默认称为f。
f配置文件根据启动的是顾客端程序还是服务端程序将配置分为了多个组,如下所示
#### 服务端启动配置
[server]
### 格式一:配置项=具体值
port=3306
### 格式二:配置项(没有值的情况,配置项为禁止客户端采用TCP/IP连接)
skip-networking
[mysqld]
[mysqld_safe]
#### 客户端启动配置
[client]
[mysql]
[mysqladmin]
### 所有配置组的格式同上
mysqladmin:是一个执行管理操作的顾客端程序,它可以检测服务器的配置和当前服务的状态,创建和删掉数据库等。
[root@test~]#mysqladmin-uroot-pprocesslist
Enterpassword:
+----+------+-----------+------+---------+------+----------+------------------+
|Id|User|Host|db|Command|Time|State|Info|
+----+------+-----------+------+---------+------+----------+------------------+
|33|root|localhost|test|Sleep|5|||
|35|root|localhost||Query|0|starting|showprocesslist|
+----+------+-----------+------+---------+------+----------+------------------+
[root@test~]#mysqladmin-uroot-pstatus
Enterpassword:
Uptime:13335Threads:2Questions:66Slowqueries:0Opens:121Flushtables:3Opentables:5Queriespersecondavg:0.004
###复印系统变量
[root@test~]#mysqladmin-uroot-pvariable
服务端和顾客端不同命令启动会读取不同的配置组,对应结构如下
假如多个配置组存在相同的配置如下所示
[mysqld]
port = 3306
###.....省略其它配置
[server]
port=3333
[mysqld_safe]
port=5555
会按照书写次序读取,也就是说前面的配置会覆盖后面的配置
f文件读取优先级
在启动Mysql服务时若果没有指定配置文件的具体路径,这么Mysql服务会到如下几个目录搜索linux启动计划任务,可以通过命令mysql--help查看,部份说明如下
Defaultoptionsarereadfromthefollowingfilesinthegivenorder:/etc/f/etc/mysql/f/usr/local/mysql/etc/f~/.f
读取文件的次序为
/etc/f/etc/mysql/f/usr/local/mysql/etc/f~/.f(注意:这儿的文件名为.f和其它路径是有区别的,但是文件名后面有一个点这么Linux服务器会将这个文件隐藏,也就是使用ll命令查询不到此文件,只有使用ll-a能够获取,另外这个文件是在登陆用户的家目录!!!)。
这四个文件会根据次序读取,也就是说假如在/etc/f文件下配置了port=3006,在~/.f下边配置了port=3307这么最终读取的结果是port为3307。
其实这是Mysql读取默认配置的情况,我们可以自己指定配置文件路径,如下所示
#### --defaults-file后面接任意路径文件,非root用户不需要--user=root
mysqld --defaults-file=/usr/local/mysql/etc/my.cnf.copy --user=root