<p>mysql5.7 рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рдкреНрд▓рдЧрдЗрди</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬреВрди 2018  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: go-sql-driver/mysql

рдореБрджреНрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг

рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
mysql5.7 рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рдкреНрд▓рдЧрдЗрди

рдЙрджрд╛рд╣рд░рдг рдХреЛрдб

// version go1.10.2 darwin/amd64
db, err := sql.Open("mysql", "admin:admin@tcp(127.0.0.1:9696)/test")
    if err != nil {
        fmt.Println("failed to open database:", err.Error())
        return
    }
    defer db.Close()

    rows, err := db.Query("SELECT id,str FROM test_shard_hash")
    if err != nil {
        fmt.Println("fetech data failed:", err.Error())
        return
    }
    defer rows.Close()
    for rows.Next() {
        var id int
        var str string
        rows.Scan(&id, &str)
        fmt.Println("uid:", id, "name:", str)
    }

рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ

[mysql] 2018/06/06 22:15:07 auth.go:293: unknown auth plugin:
[mysql] 2018/06/06 22:15:07 driver.go:120: could not use requested auth plugin '': this authentication plugin is not supported

рд╡рд┐рдиреНрдпрд╛рд╕

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.

рдореИрдВ github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql рд╕реЗ DialCfg рдХреЗ рд╕рд╛рде рдкреНрд░реЙрдХреНрд╕реА рдбрд╛рдпрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ AllowiveativePasswords рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдлрд┐рдХреНрд╕ рдерд╛ред

&mysqldriver.Config{ AllowNativePasswords: true, ... }

рд╕рднреА 20 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдВрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЕрдиреБрднрд╛рдЧ рднреА рд╣реИ:

### Configuration
*Driver version (or git SHA):*

*Go version:* run `go version` in your console

*Server version:* E.g. MySQL 5.6, MariaDB 10.0.20

*Server OS:* E.g. Debian 8.1 (Jessie), Windows 10

рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдЖрдкрдХреА рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ git rev-parse HEAD рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рд╣реИрд▓реЛ, рдореБрдЭреЗ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ?

рдирд╣реАрдВ рди

рдХреНрдпрд╛ рдпрд╣ рд╢рд╛рдЦрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддреА рд╣реИ? https://github.com/go-sql-driver/mysql/tree/empty_auth

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд░рд▓ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ print(data) рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рдж https://github.com/go-sql-driver/mysql/blob/d523deb1b23d913de5bdada721a6071e71283618/packets.go#L157 -L167 рдФрд░ рдпрд╣рд╛рдВ https://github.com/go-sql-driver/mysql/blob/d523deb1b23d913de5bdada721a6071e71283618/packets .go#L469 -L474 рдФрд░ рд╣рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдкреИрдХреЗрдЯ рдбрдВрдк рднреЗрдЬреЗрдВ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред

@gocuntian рдЖрдкрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рд╡рд╛рд▓ рд╣реИ, рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд╕рд░реНрд╡рд░ рдСрд░реНрдЯ рдХреЗ рд░рд╛рд╕реНрддреЗ рдХреЗ рдмрд┐рдирд╛ рдЗрдирд┐рдЯ рдкреИрдХреЗрдЯ рднреЗрдЬрддрд╛ рд╣реИ
accroding рд╕реНрд░реЛрдд рдХреЛрдб:
Andor.go: 240, func рдСрдЗрд▓ рдореЗрдВ (), рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
рдЕрдЧрд░ рдкреНрд▓рдЧрдЗрди == "" {
рдкреНрд▓рдЧрдЗрди = "mysql_native_password"
}
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ

MySQL 5.1 рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдореБрдЭреЗ рд╡рд╣реА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реАред

auth.go:293: unknown auth plugin:
driver.go:120: could not use requested auth plugin '': this authentication plugin is not supported

рд╢рд╛рдЦрд╛ https://github.com/go-sql-driver/mysql/tree/empty_auth рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╢рд╛рдЦрд╛ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ? @julienschmidt

рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
driver.go:113: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
рдорд╛рд╕реНрдЯрд░ рдкрд░ рд╡рд┐рдлрд▓ (рдЬрд╛рдУ рдЬрд╛рдУ)
V1.4.0 рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ
V1.3.0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЕрдЧрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдореИрдВ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджрд┐рдпрд╛ред # 828 рдФрд░ # 835 ( empty_auth рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░) рджреЗрдЦреЗрдВ

рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмрд╣реБрдд рд╕рдорд╛рди рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

# 835 рдореЗрдВ рдлрд┐рдХреНрд╕ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдЦрд╛рд▓реА рдСрд░рд▓ рдкреНрд▓рдЧрдЗрди рдирд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ @mbertschler рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ mysql_native_password рдкреНрд▓рдЧрдЗрди рдерд╛ (рджреЗрдЦреЗрдВ https://github.com/ go-sql-driver / mysql / issues / 828 # рдЬрд╛рд░реАрдХрд░рдг (401856689 рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП)ред

рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ # 835 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@ kwoodhouse93 рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЯ рд▓реЙрдЧ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ: https://github.com/go-sql-driver/mysql/issues/815#issuecomment -396244978 (рдЕрдзрд┐рдорд╛рдирддрдГ empty_auth рд╢рд╛рдЦрд╛ /

рдФрд░ рдЕрдкрдиреЗ DSN рдореЗрдВ &allowNativaPasswords=true рдЬреЛрдбрд╝рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ (рдпрд╣ true )

empty_auth рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ print(data) рдЬреЛрдбрд╝рд╛, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдерд╛:

[74/4092]0xc42036c004[mysql] 2018/07/13 11:49:18 driver.go:123: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
[74/4092]0xc420371004[mysql] 2018/07/13 11:49:26 driver.go:123: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
...

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ 12 рдмрд╛рд░ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЕрд▓рдЧ рдкрддреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдиреЗ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред

рдореЗрд░реА DSN рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ mysql.Config рдХреЗ рд╕рд╛рде FormatDSN() ред AllowNativePasswords Config рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп AllowNativePasswords рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ AllowNativePasswords: true, рдЬреЛрдбрд╝рд╛ред рдЗрд╕рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рдмрджрд▓ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдЦрд┐рд░рдХрд╛рд░ рдлрд┐рд░ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдЖ рдЧрдИред

[74/4092]0xc420294004[7/4092]0xc420294004S[74/4092]0xc4201bb004[mysql] 2018/07/13 11:53:13 driver.go:123: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.

(рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рдЗрд╕ рдмрд╛рд░ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдмрд╛рд░ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рдФрд░ рдореЗрд░реЗ рдЧреНрд░рд╛рд╣рдХ рдРрдк рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛ рджреА рдЧрдИ)

print(data) рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреНрдпрд╛ рдЖрдк рдЙрди рдкрддреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рдереЗ? рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдЦреБрдж рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдЬ рдЗрд╕ рдкрд░ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд╣реИ)ред

рдореИрдВрдиреЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.

рдореИрдВ github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql рд╕реЗ DialCfg рдХреЗ рд╕рд╛рде рдкреНрд░реЙрдХреНрд╕реА рдбрд╛рдпрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ AllowiveativePasswords рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдлрд┐рдХреНрд╕ рдерд╛ред

&mysqldriver.Config{ AllowNativePasswords: true, ... }

@mglonnro https://github.com/go-sql-driver/mysql/issues/815#issuecomment -425704501 рджреЗрдЦреЗрдВ

рдпрд╣ рддреНрд░реБрдЯрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ AllowNativePasswords: true рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рдереА

AllowNativePassword рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИред
рдЖрдкрдХреЛ config рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Config{} рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред DSN рдпрд╛ NewConfig() ред

https://godoc.org/github.com/go-sql-driver/mysql#Config

рдпрджрд┐ DSN рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ NewConfig рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдПрдХ Config рдмрдирд╛ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ API рдбреЙрдХреНрд╕ рдореЗрдВ рдкрдврд╝рд╛, рд╡рд╣ рдЪрд░рдг рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

julienschmidt picture julienschmidt  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PingGao89 picture PingGao89  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tnerolftnerolf picture tnerolftnerolf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zhaohui-kevin picture zhaohui-kevin  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jaysonShao picture jaysonShao  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ