>  기사  >  데이터 베이스  >  mysql의 실행 파일은 무엇입니까?

mysql의 실행 파일은 무엇입니까?

藏色散人
藏色散人원래의
2023-04-11 10:38:171667검색

mysql의 실행 파일은 mysqld입니다. mysqld는 Mysql 서버 프로그램을 나타내는 실행 파일입니다. 이 파일을 실행하면 서버 프로세스가 직접 시작될 수 있으며 mysqld_safe는 mysqld를 간접적으로 호출하고 우연히 시작하기도 합니다. 모니터링 프로세스.

mysql의 실행 파일은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, mysql8 버전, Dell G3 컴퓨터.

mysql의 실행 파일은 무엇인가요?

Mysql 시작 옵션 및 구성 파일

Mysql 시작 방법

다음 시작 명령은 모두 Linux 환경에 구성된 Mysql 환경 변수에 의존해야 합니다

vi /etc/profile
파일 끝에 Mysql 설치 경로를 추가합니다. (데모에서는 mysql이 /usr/local/mysql-5.7.26에 구성되어 있습니다. 이 경로는 사용자 환경에 따라 결정해야 합니다.)
내보내기 PATH=/usr/local/mysql -5.7.26/bin/:$PATH
파일을 업데이트한 후 구성 파일을 새로 고치십시오. 그렇지 않으면 즉시 적용되지 않습니다.
source /etc/ profilevi /etc/profile
在文件末尾加上Mysql的安装路径(演示中mysql配置在/usr/local/mysql-5.7.26下,这个路径需要根据自己的环境而定)
export PATH=/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,而且还会顺带启动一个监控进程,这个监控进程在服务器挂了的时候,可以自动重启服务,另外这个脚本会将服务器程序的错误信息以及诊断信息重定向到某个文件中记录错误日志。

可以不指定默认配置文件,命令如下

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选项。
  • 指定-h指定了域名为localhost也就是-hlocalhost
  • 客户端启动参数指定了--protocol=socket

如果客户端指定-h后面接的是IP地址,就算是127.0.0.1那也就是采用TCP/IP连接,那么这都是客户端去操作的,如果是服务端禁止采用TCP/IP通信应该如何去做呢?

root用户采用如下命令,非root用户不需要--user=root

mysqld

mysqld는 Mysql 서버 프로그램을 나타내는 실행 파일로, 이 파일을 실행하면 서버 프로세스를 직접 시작할 수 있습니다.

루트가 아닌 사용자가 다음과 같은 방법으로 시작할 수 있는 경우 시작 시 읽을 구성 파일을 지정하세요.

mysqld --user=root --skip-networking &

루트 사용자는 시작 매개변수를 추가해야 합니다(mysql은 보안 문제로 인해 루트 사용자가 직접 시작하는 것을 허용하지 않으므로 루트 계정으로 강제 시작하려면 시작 매개변수를 추가해야 합니다) ).

### 采用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)

mysqld_safe

mysqld_safe는 mysqld를 간접적으로 호출하고 모니터링 프로세스도 시작합니다. 또한 이 스크립트는 서버 프로그램의 오류 정보와 진단 정보를 파일로 리디렉션하여 오류 로그를 기록합니다.

기본 구성 파일을 지정할 수 없습니다. 명령은 다음과 같습니다

### 非root用户去除--user=root选项
mysqld --user=root --default-storage-engine=MyISAM

mysqld_multi

mysqld_multi를 시작할 수 있습니다 여러 mysql 데이터베이스 인스턴스에 대해서는 여기서 논의하지 않습니다.

mysql.server

실제로는 mysq의 설치 디렉터리에

support-files

폴더가 있습니다. 구체적인 디렉터리는 /usr/local/입니다. mysql -5.7.26/support-files, 내부의 mysql.server도 시작 스크립트입니다. 이 스크립트는 mysqld_safe 스크립트를 간접적으로 호출합니다. 실행 명령은 다음과 같습니다

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 |
+-------+----------------------------------------------------------------------------------------+

이 경로가 소프트 연결을 지정하는 경우

ln -s /usr/local/mysql-5.7.26/support-files/mysql.server /etc/init .d/mysql

그런 다음 시작 명령을 🎜🎜

### 长连接形式
mysql --host 127.0.0.1  --user root --port 3306 --password
 
### 短连接形式
mysql -h127.0.0.1 -uroot -P3306 -p
🎜🎜Mysql 시작 모드 옵션🎜

Mysql 서비스로 단순화할 수 있습니다. 앞에서 설명한 Mysql 서버 및 클라이언트 연결 방법과 같은 매개변수에는 TCP/IP, 명명된 파이프 및 공유 메모리, Unix 도메인 소켓 파일이 포함되며 클라이언트가 시작될 때 다음 조건이 충족되면 시작 시 일부 시작을 지정합니다. 서버와의 도메인 통신. 🎜

  • -h 옵션이 지정되지 않았습니다.
  • 도메인 이름을 localhost(-hlocalhost)로 지정하려면 -h를 지정하세요.
  • 클라이언트 시작 매개변수는 --protocol=socket을 지정합니다.

클라이언트가 -h 뒤에 IP 주소를 지정하면 127.0.0.1이더라도 TCP/IP 연결을 사용하는 경우 이 모든 작업은 클라이언트에서 수행됩니다. 서버에서 TCP/IP 통신 사용을 금지하는 경우 어떻게 해야 합니까? 🎜

루트 사용자는 다음 명령을 사용합니다. 루트가 아닌 사용자는 --user=root🎜🎜

#### 服务端启动配置
[server]
### 格式一:配置项=具体值
port=3306
### 格式二:配置项(没有值的情况,配置项为禁止客户端采用TCP/IP连接)
skip-networking

[mysqld]

[mysqld_safe]

#### 客户端启动配置
[client]

[mysql]

[mysqladmin]

### 所有配置组的格式同上
🎜🎜🎜클라이언트 작업🎜🎜🎜
[mysqld]
port = 3306
###.....省略其它配置
[server]
port=3333
[mysqld_safe]
port=5555
🎜이 필요하지 않습니다. 🎜 다시 데이터베이스 스토리지 엔진을 지정하면 MySQL의 기본값은 InnoDB입니다. 시작 옵션🎜🎜
#### --defaults-file后面接任意路径文件,非root用户不需要--user=root
mysqld --defaults-file=/usr/local/mysql/etc/my.cnf.copy --user=root
🎜🎜🎜클라이언트 작업🎜🎜🎜rrreee🎜을 통해 수정할 수 있습니다.

创建后的数据库操作引擎变为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启动方式选项虽然是方便,但也带来的一些问题,如果启动选项参数过多导致启动命令毫无可读性而言,启动选项配置的参数只对当前启动的服务生效,也就是如果下次重启所有的启动参数将被还原不会被记录,所以为了将这些启动参数保存,我们就需要一个配置文件默认称为my.cnf。

my.cnf配置文件按照启动的是客户端程序还是服务端程序将配置分为了多个组,如下所示

#### 服务端启动配置
[server]
### 格式一:配置项=具体值
port=3306
### 格式二:配置项(没有值的情况,配置项为禁止客户端采用TCP/IP连接)
skip-networking

[mysqld]

[mysqld_safe]

#### 客户端启动配置
[client]

[mysql]

[mysqladmin]

### 所有配置组的格式同上
mysqladmin:是一个执行管理操作的客户端程序,它可以检查服务器的配置和当前服务的状态,创建和删除数据库等。
[root@test ~]# mysqladmin -uroot -p processlist
Enter password:
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host      | db   | Command | Time | State    | Info             |
+----+------+-----------+------+---------+------+----------+------------------+
| 33 | root | localhost | test | Sleep   | 5    |          |                  |
| 35 | root | localhost |      | Query   | 0    | starting | show processlist |
+----+------+-----------+------+---------+------+----------+------------------+
[root@test ~]# mysqladmin -uroot -p status
Enter password:
Uptime: 13335  Threads: 2  Questions: 66  Slow queries: 0  Opens: 121  Flush tables: 3  Open tables: 5  Queries per second avg: 0.004
### 打印系统变量
[root@test ~]# mysqladmin -uroot -p variable

服务端和客户端不同命令启动会读取不同的配置组;

如果多个配置组存在相同的配置如下所示

[mysqld]
port = 3306
###.....省略其它配置
[server]
port=3333
[mysqld_safe]
port=5555

会根据书写顺序读取,也就是说后面的配置会覆盖前面的配置

  • 如果服务端采用mysqld启动服务端那么port的最终结果为port=3333(只会读取[mysqld]和[server]配置组)
  • 如果服务端采用mysqld_safe启动服务端那么port的最终结果为port=5555(只会读取[mysqld],[mysqld_safe]和[server]配置组)

My.cnf文件读取优先级

在启动Mysql服务时如果没有指定配置文件的具体路径,那么Mysql服务会到如下几个目录搜索,可以通过命令mysql --help查看,部分说明如下

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

读取文件的顺序为

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. /usr/local/mysql/etc/my.cnf
  4. ~/.my.cnf(注意:这里的文件名为.my.cnf和其它路径是有区别的,并且文件名前面有一个点那么Linux服务器会将这个文件隐藏,也就是使用ll命令查询不到此文件,只有使用ll -a才能获取,另外这个文件是在登录用户的家目录!!!)。

mysql의 실행 파일은 무엇입니까?

这四个文件会按照顺序读取,也就是说如果在/etc/my.cnf文件下配置了port=3006,在~/.my.cnf下面配置了port=3307那么最终读取的结果是port为3307。

当然这是Mysql读取默认配置的情况,我们可以自己指定配置文件路径,如下所示

#### --defaults-file后面接任意路径文件,非root用户不需要--user=root
mysqld --defaults-file=/usr/local/mysql/etc/my.cnf.copy --user=root

推荐学习:《MySQL视频教程

위 내용은 mysql의 실행 파일은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.