為了方便啟動mysql服務,修改/etc/.bash_profile文件,如下
alias mysql="/usr/local/mysql/bin/mysql"
alias mysqladmin="/usr/local/mysql/bin/mysqladmin"
或者
alias mysqlstart="sudo /usr/local/mysql/support-files/mysql.server start"
alias mysqlstop="sudo /usr/local/mysql/support-files/mysql.server stop"
由于想啟動mysql,然后修改root密碼而出現以下問題:
問題1:
ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysqld.local.pid).
解決方案:
在/etc目錄下創建my.cnf(touch /etc/my.cnf),或者直接在/usr/local/mysql/support-files/my-default.cnf中添加,內容如下:
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysqld.local.pid
user = mysql
tmpdir = /tmp
問題2:
ERROR2002(HY000):Can't connect to local MySQL server through socket '/tmp/mysql.sock'(2)
在/etc目錄下創建my.cnf(touch /etc/my.cnf),或者直接在/usr/local/mysql/support-files/my-default.cnf中添加,內容如下:
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
init-connect ='SET NAMES utf8'
max_allowed_packet = 64M
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock
innodb_file_per_table=1
#已添加內容
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysqld.local.pid
user = mysql
tmpdir = /tmp
[mysqld_safe]
timezone = '+0:00'
問題3:
重設root密碼步驟:
步驟1:sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables(跳過密碼)
步驟2:sudo mysql -u root(不使用密碼登錄,由于之前alais了,所以可以直接寫mysql,不然需要寫全路徑sudo /usr/local/mysql/bin/mysql -u root)
步驟3:已登入mysql,修改用戶密碼
UPDATE mysql.user SET authentication_string=PASSWORD('新密碼') WHERE User=‘root’;
FLUSH PRIVILEGES;
但是在第一個步驟時,報錯:mysql_safe?A mysqld process already exists
查看是否有正在運行的mysql進程:ps -ef|grep mysql
kill -9 pid殺死進程后,mysql自動啟動。
原因:實質應該是有守護進程listen,若kill掉馬上又啟動一個
解決:試過答案中mysqlstop,但是沒有作用!
打開設置,選擇mysql
然后不勾選自動啟動,輸入用戶密碼
然后重啟電腦。
然后再按照重設密碼步驟,修改密碼成功。