Mysql
如何讓 PHP 使用 UNIX 套接字 (Joomla) 連接到數據庫
我想讓我的 PHP 應用程序(例如 Joomla)使用 UNIX 套接字連接到本地 mysql 數據庫。
我已經配置了 php.ini:
mysqli.default_socket = /var/run/mysqld/mysqld.sock mysql.default_socket = /var/run/mysqld/mysqld.sock pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
但是在 Joomla 中,我只能將 localhost 或 127.0.0.1 設置為數據庫,是否可以覆蓋它?如何測試實際使用的 UNIX 套接字?
我的 MySQL/MariaDB 配置如下:
[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc_messages_dir = /usr/share/mysql lc_messages = en_US skip-external-locking bind-address = 127.0.0.1 max_connections = 500 connect_timeout = 10 wait_timeout = 600 max_allowed_packet = 16M thread_cache_size = 1000 sort_buffer_size = 512M bulk_insert_buffer_size = 16M tmp_table_size = 8G max_heap_table_size = 8G myisam_recover = FORCE,BACKUP key_buffer_size = 128M open-files-limit = 65535 table_open_cache = 10240 table_open_cache_instances = 8 table-definition-cache = 4096 myisam_sort_buffer_size = 512M key-cache-segments=8 concurrent_insert = 2 read_buffer_size = 32M read_rnd_buffer_size = 64M query_cache_limit = 96M query_cache_size = 128M query_cache_min_res_unit=7108 query_cache_type = 1 log_warnings = 2 slow_query_log_file = /var/log/mysql/mariadb-slow.log long_query_time = 10 log_slow_verbosity = query_plan log_bin = /var/log/mysql/mariadb-bin log_bin_index = /var/log/mysql/mariadb-bin.index sync_binlog = 1 expire_logs_days = 14 max_binlog_size = 100M default_storage_engine = InnoDB innodb_log_file_size = 50M innodb_buffer_pool_size = 6G innodb_buffer_pool_instances=8 innodb_log_buffer_size = 32M innodb_file_per_table = 1 innodb_concurrency_tickets=5000 innodb_open_files = 240000 innodb_io_capacity = 240000 innodb_flush_method = O_DIRECT innodb-log-files-in-group = 2 innodb-flush-log-at-trx-commit = 1 [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 512M !includedir /etc/mysql/conf.d/
127.0.0.1 用於 TCP 套接字。
’localhost’ 用於 Unix 文件系統套接字。
我們可以使用
netstat -ln | grep 'mysql'
來確定連接方法。並探索選項來強制執行特定類型shell> mysql --host=127.0.0.1 shell> mysql --protocol=TCP shell> mysql --host=localhost shell> mysql --host=localhost --protocol=TCP
連接參數應該是這樣的
$link = mysql_connect(’localhost:/var/run/mysqld/mysqld.sock’, ‘mysql_user’, ‘mysql_password’);
var $host = ':/var/run/mysqld/mysqld.sock'; var $user = 'your_user_db_name'; var $db = 'your_db_name'; var $password = 'your_db_password';