首頁  >  文章  >  資料庫  >  mysql的運行檔是什麼

mysql的運行檔是什麼

藏色散人
藏色散人原創
2023-04-11 10:38:171761瀏覽

mysql的運行文件是mysqld;mysqld是一個可執行文件,代表著Mysql伺服器程序,執行這個文件可以直接啟動一個伺服器進程;而mysqld_safe是一個啟動腳本,它會間接呼叫mysqld,並且還會順帶啟動一個監控進程。

mysql的運行檔是什麼

本教學操作環境:Windows10系統、mysql8版、Dell G3電腦。

mysql的運行檔是什麼?

Mysql啟動選項和設定檔

Mysql啟動方式

#下面的啟動指令都需要依賴在Linux環境下設定的Mysql環境變數

vi /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 --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启动方式选项虽然是方便,但也带来的一些问题,如果启动选项参数过多导致启动命令毫无可读性而言,启动选项配置的参数只对当前启动的服务生效,也就是如果下次重启所有的启动参数将被还原不会被记录,所以为了将这些启动参数保存,我们就需要一个配置文件默认称为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
上一篇:mysql有plsql嗎下一篇:mysql有plsql嗎