Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
261 lines
7.2 KiB
261 lines
7.2 KiB
// Copyright 2015 PingCAP, Inc. |
|
// |
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
|
// you may not use this file except in compliance with the License. |
|
// You may obtain a copy of the License at |
|
// |
|
// http://www.apache.org/licenses/LICENSE-2.0 |
|
// |
|
// Unless required by applicable law or agreed to in writing, software |
|
// distributed under the License is distributed on an "AS IS" BASIS, |
|
// See the License for the specific language governing permissions and |
|
// limitations under the License. |
|
|
|
package mysql |
|
|
|
// Version informations. |
|
const ( |
|
MinProtocolVersion byte = 10 |
|
MaxPayloadLen int = 1<<24 - 1 |
|
ServerVersion string = "5.5.31-TiDB-1.0" |
|
) |
|
|
|
// Header informations. |
|
const ( |
|
OKHeader byte = 0x00 |
|
ErrHeader byte = 0xff |
|
EOFHeader byte = 0xfe |
|
LocalInFileHeader byte = 0xfb |
|
) |
|
|
|
// Server informations. |
|
const ( |
|
ServerStatusInTrans uint16 = 0x0001 |
|
ServerStatusAutocommit uint16 = 0x0002 |
|
ServerMoreResultsExists uint16 = 0x0008 |
|
ServerStatusNoGoodIndexUsed uint16 = 0x0010 |
|
ServerStatusNoIndexUsed uint16 = 0x0020 |
|
ServerStatusCursorExists uint16 = 0x0040 |
|
ServerStatusLastRowSend uint16 = 0x0080 |
|
ServerStatusDBDropped uint16 = 0x0100 |
|
ServerStatusNoBackslashEscaped uint16 = 0x0200 |
|
ServerStatusMetadataChanged uint16 = 0x0400 |
|
ServerStatusWasSlow uint16 = 0x0800 |
|
ServerPSOutParams uint16 = 0x1000 |
|
) |
|
|
|
// Command informations. |
|
const ( |
|
ComSleep byte = iota |
|
ComQuit |
|
ComInitDB |
|
ComQuery |
|
ComFieldList |
|
ComCreateDB |
|
ComDropDB |
|
ComRefresh |
|
ComShutdown |
|
ComStatistics |
|
ComProcessInfo |
|
ComConnect |
|
ComProcessKill |
|
ComDebug |
|
ComPing |
|
ComTime |
|
ComDelayedInsert |
|
ComChangeUser |
|
ComBinlogDump |
|
ComTableDump |
|
ComConnectOut |
|
ComRegisterSlave |
|
ComStmtPrepare |
|
ComStmtExecute |
|
ComStmtSendLongData |
|
ComStmtClose |
|
ComStmtReset |
|
ComSetOption |
|
ComStmtFetch |
|
ComDaemon |
|
ComBinlogDumpGtid |
|
ComResetConnection |
|
) |
|
|
|
// Client informations. |
|
const ( |
|
ClientLongPassword uint32 = 1 << iota |
|
ClientFoundRows |
|
ClientLongFlag |
|
ClientConnectWithDB |
|
ClientNoSchema |
|
ClientCompress |
|
ClientODBC |
|
ClientLocalFiles |
|
ClientIgnoreSpace |
|
ClientProtocol41 |
|
ClientInteractive |
|
ClientSSL |
|
ClientIgnoreSigpipe |
|
ClientTransactions |
|
ClientReserved |
|
ClientSecureConnection |
|
ClientMultiStatements |
|
ClientMultiResults |
|
ClientPSMultiResults |
|
ClientPluginAuth |
|
ClientConnectAtts |
|
ClientPluginAuthLenencClientData |
|
) |
|
|
|
// Cache type informations. |
|
const ( |
|
TypeNoCache byte = 0xff |
|
) |
|
|
|
// Auth name informations. |
|
const ( |
|
AuthName = "mysql_native_password" |
|
) |
|
|
|
// MySQL database and tables. |
|
const ( |
|
// SystemDB is the name of system database. |
|
SystemDB = "mysql" |
|
// UserTable is the table in system db contains user info. |
|
UserTable = "User" |
|
// DBTable is the table in system db contains db scope privilege info. |
|
DBTable = "DB" |
|
// TablePrivTable is the table in system db contains table scope privilege info. |
|
TablePrivTable = "Tables_priv" |
|
// ColumnPrivTable is the table in system db contains column scope privilege info. |
|
ColumnPrivTable = "Columns_priv" |
|
// GlobalVariablesTable is the table contains global system variables. |
|
GlobalVariablesTable = "GLOBAL_VARIABLES" |
|
// GlobalStatusTable is the table contains global status variables. |
|
GlobalStatusTable = "GLOBAL_STATUS" |
|
// TiDBTable is the table contains tidb info. |
|
TiDBTable = "tidb" |
|
) |
|
|
|
// PrivilegeType privilege |
|
type PrivilegeType uint32 |
|
|
|
const ( |
|
_ PrivilegeType = 1 << iota |
|
// CreatePriv is the privilege to create schema/table. |
|
CreatePriv |
|
// SelectPriv is the privilege to read from table. |
|
SelectPriv |
|
// InsertPriv is the privilege to insert data into table. |
|
InsertPriv |
|
// UpdatePriv is the privilege to update data in table. |
|
UpdatePriv |
|
// DeletePriv is the privilege to delete data from table. |
|
DeletePriv |
|
// ShowDBPriv is the privilege to run show databases statement. |
|
ShowDBPriv |
|
// CreateUserPriv is the privilege to create user. |
|
CreateUserPriv |
|
// DropPriv is the privilege to drop schema/table. |
|
DropPriv |
|
// GrantPriv is the privilege to grant privilege to user. |
|
GrantPriv |
|
// AlterPriv is the privilege to run alter statement. |
|
AlterPriv |
|
// ExecutePriv is the privilege to run execute statement. |
|
ExecutePriv |
|
// IndexPriv is the privilege to create/drop index. |
|
IndexPriv |
|
// AllPriv is the privilege for all actions. |
|
AllPriv |
|
) |
|
|
|
// Priv2UserCol is the privilege to mysql.user table column name. |
|
var Priv2UserCol = map[PrivilegeType]string{ |
|
CreatePriv: "Create_priv", |
|
SelectPriv: "Select_priv", |
|
InsertPriv: "Insert_priv", |
|
UpdatePriv: "Update_priv", |
|
DeletePriv: "Delete_priv", |
|
ShowDBPriv: "Show_db_priv", |
|
CreateUserPriv: "Create_user_priv", |
|
DropPriv: "Drop_priv", |
|
GrantPriv: "Grant_priv", |
|
AlterPriv: "Alter_priv", |
|
ExecutePriv: "Execute_priv", |
|
IndexPriv: "Index_priv", |
|
} |
|
|
|
// Col2PrivType is the privilege tables column name to privilege type. |
|
var Col2PrivType = map[string]PrivilegeType{ |
|
"Create_priv": CreatePriv, |
|
"Select_priv": SelectPriv, |
|
"Insert_priv": InsertPriv, |
|
"Update_priv": UpdatePriv, |
|
"Delete_priv": DeletePriv, |
|
"Show_db_priv": ShowDBPriv, |
|
"Create_user_priv": CreateUserPriv, |
|
"Drop_priv": DropPriv, |
|
"Grant_priv": GrantPriv, |
|
"Alter_priv": AlterPriv, |
|
"Execute_priv": ExecutePriv, |
|
"Index_priv": IndexPriv, |
|
} |
|
|
|
// AllGlobalPrivs is all the privileges in global scope. |
|
var AllGlobalPrivs = []PrivilegeType{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, GrantPriv, AlterPriv, ShowDBPriv, ExecutePriv, IndexPriv, CreateUserPriv} |
|
|
|
// Priv2Str is the map for privilege to string. |
|
var Priv2Str = map[PrivilegeType]string{ |
|
CreatePriv: "Create", |
|
SelectPriv: "Select", |
|
InsertPriv: "Insert", |
|
UpdatePriv: "Update", |
|
DeletePriv: "Delete", |
|
ShowDBPriv: "Show Databases", |
|
CreateUserPriv: "Create User", |
|
DropPriv: "Drop", |
|
GrantPriv: "Grant Option", |
|
AlterPriv: "Alter", |
|
ExecutePriv: "Execute", |
|
IndexPriv: "Index", |
|
} |
|
|
|
// Priv2SetStr is the map for privilege to string. |
|
var Priv2SetStr = map[PrivilegeType]string{ |
|
CreatePriv: "Create", |
|
SelectPriv: "Select", |
|
InsertPriv: "Insert", |
|
UpdatePriv: "Update", |
|
DeletePriv: "Delete", |
|
DropPriv: "Drop", |
|
GrantPriv: "Grant", |
|
AlterPriv: "Alter", |
|
ExecutePriv: "Execute", |
|
IndexPriv: "Index", |
|
} |
|
|
|
// SetStr2Priv is the map for privilege set string to privilege type. |
|
var SetStr2Priv = map[string]PrivilegeType{ |
|
"Create": CreatePriv, |
|
"Select": SelectPriv, |
|
"Insert": InsertPriv, |
|
"Update": UpdatePriv, |
|
"Delete": DeletePriv, |
|
"Drop": DropPriv, |
|
"Grant": GrantPriv, |
|
"Alter": AlterPriv, |
|
"Execute": ExecutePriv, |
|
"Index": IndexPriv, |
|
} |
|
|
|
// AllDBPrivs is all the privileges in database scope. |
|
var AllDBPrivs = []PrivilegeType{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, GrantPriv, AlterPriv, ExecutePriv, IndexPriv} |
|
|
|
// AllTablePrivs is all the privileges in table scope. |
|
var AllTablePrivs = []PrivilegeType{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, GrantPriv, AlterPriv, IndexPriv} |
|
|
|
// AllColumnPrivs is all the privileges in column scope. |
|
var AllColumnPrivs = []PrivilegeType{SelectPriv, InsertPriv, UpdatePriv} |
|
|
|
// AllPrivilegeLiteral is the string literal for All Privilege. |
|
const AllPrivilegeLiteral = "ALL PRIVILEGES"
|
|
|