У меня есть куча удаленных серверов MySQL, которые разрешают подключение только с localhost. Для того, чтобы подключиться к ним я следующее:Emacs как использовать туннель ssh для подключения к удаленному MySQL
ssh host
mysql -uuser -psecret -hhost.myhost.com
В Emacs Я настроил подключение к локальной MySQL, используя SQL-MySQL-режим:
(setq sql-connection-alist
'((pool-a
(sql-product 'mysql)
(sql-server "localhost")
(sql-user "user")
(sql-password "secret")
(sql-database "")
(sql-port 3306))
))
(defun sql-connect-preset (name)
"Connect to a predefined SQL connection listed in `sql-connection-alist'"
(eval `(let ,(cdr (assoc name sql-connection-alist))
(flet ((sql-get-login (&rest what)))
(sql-product-interactive sql-product)))))
(defun sql-local()
"Connect to the local MySQL server"
(interactive)
(sql-connect-preset 'pool-a)
(delete-other-windows))
(define-key global-map [f10] 'sql-local)
Таким образом, каждый раз, когда я нажимаю F10
, я получаю Оболочка MySQL.
Можно ли настроить sql-mysql, чтобы он подключался к внешней машине через ssh и использовала программу mysql на этой машине, чтобы я мог подключаться из Emacs во все стороны?
Он дает ошибку "apply: определение функции Symbol void: sql-get-login" – user4035
sql-get-login определяется в sql.el. Вы загрузили его? Попробуйте (требуется «sql») до определения совета. –
Я не загрузил его. Теперь он работает – user4035