7 H" J: g0 I6 t- T然後重啟mysqld5 T# N- ]: W3 c6 s+ ?, a/ P% [
service mysqld restart % ?2 m D; D7 ^3 @- \+ \) |, j) ~0 [/ }- c
重啟後可能須做下列動作:) Y/ o" p9 ^! z
mysql -u roor -p - J) K1 J* O/ j) J6 G9 ]3 t
SHOW VARIABLES LIKE 'validate_password%';9 Y% `+ R" @4 A) z2 s4 D0 l
SET GLOBAL validate_password_policy=LOW;ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';搞定!! ; E8 j6 M! B1 q+ x ; r( @+ b& T8 j! ~' r註: mysqld啟動時,在/var/log/mysql/mysqld.log紀錄著:註: 可以先寫支php程式以測試 ~~~ ) P, c4 d' I1 n1 A. ^2 _( h8 H
<? 4 X3 g8 I: e! k; K& l4 r0 J! [
$hostname = "x.x.x.x"; $ w" r. f0 k' k4 e2 ~; t" l4 Z
$database = "db_name";2 B. B7 n* a0 ]2 }5 ^/ C$ x
$username = "user_name";1 ?% S6 s0 s( U5 f! I: N2 x L
$password = "pwd";- t# G' X9 M( N9 f+ r) z- p
7 J6 L, I+ v; J: P2 N
$conn = mysqli_connect($hostname, $username, $password,$database) or trigger_error(mysql_error(),E_USER_ERROR);; `: M( x, k0 O: C
mysqli_query($conn ,"SET NAMES utf8");7 b9 g7 ]! T5 B" W
* ~# e$ u! k& ~! S4 X" V' o9 ~0 i
$sql = "select count(*) as total from " . "table_name"; % k1 a$ n$ X/ k8 s5 t' \
$rec = mysqli_fetch_assoc(mysqli_query( $conn,$sql)); $ o, @. o- d2 [4 n" g( S
echo $rec['total']; 7 W9 B/ y+ e. {* m
mysqli_close($conn); 7 N' g0 U0 M+ z. O% B
?>
複製代碼
[hide=d100000000000000000000,999999999999]於video1主機下 /test/connectmysql8.php[/hide] 4 n& U2 }* A' x7 K) u% T ' r0 X" \8 c. |8 z6 [3 } x" G7 n b. W# e' m+ U9 c0 l- r
當php 7.2.24 connect to mysql server,出現 :
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9 0 D" T; @, s, M/ e8 S. ]3 i
Stack trace:8 {0 j) z" I* F. G3 o
#0 {main} : B4 C& Z7 K" F# t
thrown in /test/connectmysql8.php on line 9 # q% F- q- N+ g; F% {: g4 ?; T2 J& n
# q4 D* H& f3 X X5 Y
Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /test/connectmysql8.php:9( V" p0 d( ~9 m) q/ C, {; v6 D
Stack trace:2 a0 O! q) b/ k0 r
#0 {main} 5 @# H( v0 w0 @8 \* n5 z: ]
thrown in /test/connectmysql8.php on line 9
複製代碼
這是版本相依的問題,只要 yum install php-mysqlnd 或 yum install php-mysqli 即可 " l; {7 f4 L4 x$ q% Y- i& |% a+ z# w5 w
) T% n1 O; l% E U3 f
[Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. 7 H' E/ S; E: r% `% h6 O" a0 ~說明: 千萬不能照它建議用"UTF8MB4",否則無法成功啟動 / h7 j* `" ~0 g1 L& j* r ; t: d" _9 F* t& @1 W/ s: Q(2)! Q: K% H7 G3 O
(1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'system>0' at line 1. ~$ \( Y% I4 o
SELECT COUNT(*) FROM common_usergroup WHERE type='special' and system>0 q2 P, T! N: x$ w- H ( b7 |1 S& z1 b3 d. i/ v(1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups = '' AND starttime<=1532077291 AND (endtime>=1532077291 OR endtime=0) ORD' at line 11 U1 D `: Y- w# ]. u' `, C" t
SELECT * FROM forum_announcement WHERE type!=2 AND groups = '' AND starttime<=1532077291 AND (endtime>=1532077291 OR endtime=0) ORDER BY displayorder, starttime DESC, id DESC LIMIT 1 $ {2 I' H; k5 X % X9 |; g) v; F- c6 a因為MySQL 8.0+將system和groups作為了關鍵字,所以不能直接在SQL中將system和groups這兩個詞作為數據庫、數據表、數據表字段中的任意一種使用,如果數據庫名或數據表名或數據表字段名使用了system或groups作為名字,必須使用一對反引號引用起來。寫作`system`或`groups`。5 G, b" e' v R
8 |5 ?# H+ j, L第一個錯誤需要找到Discuz!目錄中的source\class\table\table_common_usergroup.php,! w y' b/ n0 d' x% A2 d) \
將文件中所有的system全部改成`system`,保存後重新上傳到服務器的相同目錄即可。 + s& g N4 J, c8 F0 P" c& |. } ) j6 x+ {! k4 K/ f a' W( |第二個錯誤需要找到Discuz!目錄下中的source\class\table\table_forum_announcement.php, ) T$ P' A9 z/ \5 ~) x- {將文件中所有的groups全部改為`groups`,保存後重新上傳到服務器的相同目錄即可。 9 Q9 l3 U' [* A1 L 7 t1 \- e% T2 A0 u3 h如果在MySQL 8+環境下安裝Discuz!,在安裝前需要給install\data\install.sql文件中沒有加引號的所有system逐一添加一對反引號保存重新上傳到服務器的相同目錄,否則也會出現SQL語法錯誤。7 N% T! {1 K5 ?
) m" L( z4 G5 y S" J c為了避免語法錯誤,在寫SQL語句時,一定要為所有的數據庫名、數據表名、數據表字段名全部添加一對反引號,像Discuz!這樣的寫法是很不妥的。0 E" S. f+ B9 Q1 r/ [5 @* a! F! w& k
以上參考: 升級到 MySQL 8.0+ 後Discuz! 更新緩存時出現SQL語法錯誤 6 l" T8 A) X: [& K7 ^$ T 5 k' C' w4 z. Q3 T & i* `( G2 O$ b1 V; Z( f; K7 l4 }) ]& m z/ I