最近では、いくつかの不可解なピットが発生しますマックに転送ツールを開発し始めている、我々としても、後で見つけやすい全体のプロセスを記録することがあります。

ダウンロードしてインストール

入力する最初  のMySQLの公式サイトを、自由に選択しCommunityたバージョンを:MySQL Community ServerMySQLの公式ウェブサイトを提供tar.gzし、dmgインストールパッケージの二つのフォーマット、そして周り主に使用してdmgインストール。

ダウンロード

インストールを完了するために、確認の指示に従って、インストールパッケージをダウンロードした後、ダブルクリックして開きます。インストールが成功したオープンシステム環境設定の後、MySQLは一番下に見つけることができ、あなたはその起動とシャットダウンとMySQL経由のMySQLのステータスを表示することができます。

開始

コンフィギュレーションを指定します

あなたはこのモードを使用してMySQLを起動すると、MySQLは次の順序で設定ファイルをロードしますので、設定ファイルで指定されていません。

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. /usr/local/mysql/etc/my.cnf
  4. ~/.my.cnf

    あなただけが1つのコンフィギュレーション・ファイルを作成する必要があると設定することができます。

mysqlの:コマンドが見つかりません。

直接インストールが後にコマンドラインにmysqlプロンプトが表示されますmysql: command not found、環境変数に追加する必要があります。

vimの〜/ .bash_profileの

次のコマンドを追加します。

輸出PATH = $ {PATH}:は/ usr / local / mysqlの/ binに

それはすぐに反映させるに保存した後:

ソース〜/ .bash_profileの

あなたは、MySQL関連のコマンドを使用することができます。

設定ユーザー

新たにインストールしたMySQLの唯一の空のパスワードのroot使用者は、あなたが最初のユーザーにパスワードを設定する必要があります。

mysqladminは-u rootパスワードパスワード

そして、適切なパスワードのMySQLを設定するために使用します。

MySQLの-uルート-p 
、先ほど設定したパスワード

以来root、ユーザーがローカルでのみのログオンに使用することができ、リモートでログインので、あなたは、リモートログイン用のユーザーを作成する必要はありませ:

GRANT ALL ON *.* TO 你的用户名 @'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;

这条语句的意思是创建一个用户,赋予它以任何方式访问,在任何数据库的所有操作权限,但是实际这里的任何访问方式其实不包括localhost,所以还需要单独设定:

GRANT ALL ON *.* TO 你的用户名 @localhost IDENTIFIED BY '你的密码' WITH GRANT OPTION;

与上一条语句一样,只是将任何访问方式改为了以localhost访问。

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘127.0.0.1’ (61)

配置完远程登录的账户后,尝试使用该账户登录一下 MySQL:

mysql -h localhost -u 你的用户名 -p
输入密码

确实是可以登录成功的,可是如果使用 ip 登录:

mysql -h 127.0.0.1 -u 你的用户名 -p
输入密码

却会出现ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)的错误。原因是使用dmg安装的 MySQL 启动时的默认端口号不是3306而是3307,可以在这里修改:

sudo nano com.oracle.oss.mysql.mysqld.plist

--port的值改为3306即可:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>com.oracle.oss.mysql.mysqld</string>
<key>ProcessType</key> <string>Interactive</string>
<key>Disabled</key> <false/>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>SessionCreate</key> <true/>
<key>LaunchOnlyOnce</key> <false/>
<key>UserName</key> <string>_mysql</string>
<key>GroupName</key> <string>_mysql</string>
<key>ExitTimeOut</key> <integer>600</integer>
<key>Program</key> <string>/usr/local/mysql/bin/mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
<string>--port=3307</string>
</array>
<key>WorkingDirectory</key> <string>/usr/local/mysql</string>
</dict>
</plist>

或是直接指定端口号连接:

mysql -h 127.0.0.1 -P 3307 -u 你的用户名 -p
输入密码

Out of resources when opening file ‘…’

这两个都是 JDBC 连接 MySQL 时报的错,之所以放在一起说是因为改着改着莫名其妙两个都好了。

配好 MySQL 项目后运行了一个多数据源并使用数据库连接池的项目,一共有 32 个数据源,tomcat-jdbc 连接池每个数据源初始化 10 个连接,在创建一半数据源之后开始出现第一个错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

很多种情况都会导致这个错误,不过这里应该是数据库连接数不够,想到配置完后几乎没有编辑my.cnf文件,于是添加了这些属性:

max_connect_errors = 10000
max_connections=10000
max_user_connections=10000

修改完后使用show variables like 'max%';查看数据库属性,发现对应数值确实改变了,但是运行程序还是会出现一样的问题。

后来也 google 了很久,推测应该是系统配置导致的限制,但是也没找到问题具体出在哪里,只好先把初始化的线程数改小看看能不能正常运行,结果程序运行了一段时间后又出现另一个错误:

Out of resources when opening file './xxx.MYD' (Errcode: 24)

这个错误的原因就很显而易见了,肯定是 MySQL 打开的文件过多了,但是我明明记得在my.cnf中设置了open_files_limit,不可能出现这个错误啊。

结果使用show variables like 'open%';一看,配置竟然没生效,文件数只有可怜的 256,再三确认配置没有问题后认定原因肯定出在系统配置上。

首先使用ulimit -n查看系统的文件数限制,果然是 256,看来 MySQL 会在my.cnfulimit中选择较小的一方作为真正的值。

然后 google 一下 Mac 如何修改这个数值,一种方式是使用launchctl limit maxfiles 65535将文件数修改成 65535,尝试后发现确实系统的ulimit -n和 MySQL 的open_files_limit都变成了 65535。当时以为这样就解决了,结果又发现 JDBC 无法连接 MySQL 了,而 MySQL 客户端就能连上,真是匪夷所思。还好这个配置只要重启电脑就会失效,重启过后又能正常的连上 MySQL 了。

还有一种方法只能用在 Mac OS X Yosemite 上的,首先创建/Library/LaunchDaemons/limit.maxfiles.plist文件,添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>65536</string>
<string>65536</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>

创建/Library/LaunchDaemons/limit.maxproc.plist文件,添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>2048</string>
<string>2048</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>

そして、コンピュータは、値が変更されたことがわかります再起動し、また、すべての方法は、通常に接続することができ、私は後でそれが表示されません最初のエラーでスレッド数を初期化するために戻って転送しました。