mysql的運行文件是mysqld;mysqld是一個可執行文件,代表著Mysql伺服器程序,執行這個文件可以直接啟動一個伺服器進程;而mysqld_safe是一個啟動腳本,它會間接呼叫mysqld,並且還會順帶啟動一個監控進程。
本教學操作環境:Windows10系統、mysql8版、Dell G3電腦。
mysql的運行檔是什麼?
#下面的啟動指令都需要依賴在Linux環境下設定的Mysql環境變數
mysqldmysqld是一個可執行文件,就代表著Mysql伺服器程序,執行這個文件可以直接啟動一個伺服器進程。 如果非root使用者可以用以下方式啟動,指定啟動時讀取的設定檔。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 --defaults-file=/etc/my.cnf &root使用者需要加入啟動參數(mysql因為安全性問題不讓root使用者直接啟動,所以需要加入啟動參數強制使用root帳號啟動)。
mysqld --defaults-file=/etc/my.cnf --user=root &mysqld_safemysqld_safe是一個啟動腳本,它會間接呼叫mysqld,而且還會順帶啟動一個監控進程,這個監控進程在伺服器掛了的時候,可以自動重新啟動服務,另外這個腳本會將伺服器程式的錯誤訊息以及診斷訊息重新導向到某個檔案中記錄錯誤日誌。 可以不指定預設設定文件,指令如下
mysqld_safe --defaults-file=/etc/my.cnf &mysqld_multimysqld_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/startMysql啟動方式選項Mysql服務在啟動時就可以指定一些啟動參數,如之前討論過的Mysql服務端和客戶端的連接方式有TCP/IP、命名管道和共享記憶體、Unix域套接字文件,如果客戶端啟動時滿足以下幾種情況,就是和服務端採用域套接字文件通訊。
選項。
指定了網域為localhost也就是
-hlocalhost。
。
-h後面接的是IP位址,就算是127.0.0.1那也就是採用TCP/IP連接,那麼這都是客戶端去操作的,如果是服務端禁止採用TCP/IP通訊該如何做呢?
--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启动方式选项虽然是方便,但也带来的一些问题,如果启动选项参数过多导致启动命令毫无可读性而言,启动选项配置的参数只对当前启动的服务生效,也就是如果下次重启所有的启动参数将被还原不会被记录,所以为了将这些启动参数保存,我们就需要一个配置文件默认称为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
会根据书写顺序读取,也就是说后面的配置会覆盖前面的配置
在启动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
读取文件的顺序为
这四个文件会按照顺序读取,也就是说如果在/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中文網其他相關文章!