1、安裝
$ sudo apt-get install mysql-server
$ sudo apt-get install mysql-client
$ sudo apt-get install libmysqlclient-dev
以此在終端輸入上述程式碼,等待安裝。裝好後,輸入以下程式碼檢查下是否安裝成功。
$ sudo netstat -tap | grep mysql
$ netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 7510/mysqld12345
如果出現第三行提示,則表明安裝成功。
2、登入MySQL
$ mysql -u root -p
輸入密碼,如果可以進入則下面的不用看了;如果提示不能登入,則我們嘗試啟用安全模式登入MySQL,這樣可以繞過密碼登入,登入後再修改密碼。
3、安全模式登入MySQL
$ sudo /etc/init.d/mysql stop
-------------------------------------
[sudo] wl 的密碼:
[ ok ] Stopping mysql (via systemctl): mysql.service.
$ sudo /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
輸入第一行終止MySQL執行,成功,會提示下面兩行;輸入第四行,成功,沒有任何報錯則可以另外開啟一個終端視窗進行下一步操作;但是一般會報錯,比如提示mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists
因此我們嘗試輸入以下程式碼
$ sudo mkdir -p /var/run/mysqld
$ sudo chown mysql:mysql /var/run/mysqld
最後再次輸入:
sudo /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
到了這裡不在提示錯誤,可以開啟另一個終端埠了,嘗試無密碼登入MySQL。
mysql -u root
到這裡應該可以進入MySQL了,繼續操作
> use mysql;
> update user set authentication_string=PASSWORD("這裡輸入你要改的密碼") where User='root'; #更改密碼
> update user set plugin="mysql_native_password"; #如果沒這一行可能也會報一個錯誤,因此需要執行這一行
> flush privileges; #更新所有操作許可權
> quit;
4、使用修改的密碼登入MySQL
經過上面一系列的操作,應該可以正常使用你更改的密碼登入了。
$ sudo /etc/init.d/mysql stop
$ sudo /etc/init.d/mysql start # reset mysql
$ mysql -u root -p
第一行先終止資料庫執行,第二行重啟資料庫服務,第三行root使用者登入。
第一步:
在使apt-get install mysqlserver
預設安裝 mysql
的情況下需要修改
$ vim /etc/mysql/my.cnf
找到 bind-address = 127.0.0.1
(或者檔案在 /etc/mysql/mysql.conf.d/mysqld.cnf )
註釋掉這行,如:#bind-address = 127.0.0.1
或者改為: bind-address = 0.0.0.0
允許任意IP訪問;
或者自己指定一個IP地址。
重啟 MySQL:
$ sudo service mysql restart
第二步:
授權使用者能進行遠端連線
> grant all privileges on *.* to root@"%" identified by "password" with grant option;
> flush privileges;
第一行命令解釋如下,.:第一個代表資料庫名;第二個代表表名。這裡的意思是所有資料庫裡的所有表都授權給使用者。root:授予root賬號。“%”:表示授權的使用者IP可以指定,這裡代表任意的IP地址都能訪問MySQL資料庫。“password”:分配賬號對應的密碼,這裡密碼自己替換成你的mysql root帳號密碼。
第二行命令是重新整理許可權資訊,也即是讓我們所作的設定馬上生效。
在使用 MySQL 時當建表語句中有以下語句時(該問題是我在使用 GORM 時遇到的):
> create_time DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
則會出現以下的異常:
Invalid default value for ‘create_time’
這是由於 SQL_MODE 的問題沒設定好,方案如下:
方案一:
查詢當前資料庫的 SQL_MODE
輸入:
select @@sql_mode
得到以下結果:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
可以看到 NO_ZERO_IN_DATE,NO_ZERO_DATE 是 DATE 不能全部為 0 的原因.
所以把模式中的 NO_ZERO_IN_DATE,NO_ZERO_DATE 去掉就可
SET [SESSION|GLOBAL] sql_mode=’modes’下:
SET GLOBAL sql_mode=’ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
其中:SESSION只在當前會話中生效,GLOBAL為全域性生效。
方案二:
改 mysql 模式
修改my.cnf
檔案,在 [mysqld] 中新增
sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
重啟mysql
方案三:
把語句改為以下就可以執行建立表
create_time DATETIME NOT NULL DEFAULT '0000-01-01 00:00:00';
如果在配置過程中遇到問題可以使用下面的命令檢視錯誤
$ tail -30 /var/log/mysql/error.log
$ ps aux |grep mysql*
本作品採用《CC 協議》,轉載必須註明作者和本文連結