Mariadb docker 安装

常用执行方式:
1.指定本地配置
2. 指定本地database存放路径,便于其他客户端或程序管理
docker run –name at-mariadb -v /usr/local/share/mariadb/custom_conf:/etc/mysql/conf.d -v /usr/local/share/mariadb/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=banrieen -d mariadb:latest
How to use this image
Start a mariadb server instance
Starting a MariaDB instance is simple:

最简单的执行方式,需要设置root登陆密码

$ docker run –name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag
… where some-mariadb is the name you want to assign to your container, my-secret-pw is the password to be set for the MySQL root user and tag is the tag specifying the MySQL version you want. See the list above for relevant tags.
Connect to MySQL from an application in another Docker container
Since MariaDB is intended as a drop-in replacement for MySQL, it can be used with many applications. This image exposes the standard MySQL port (3306), so container linking makes the MySQL instance available to other application containers. Start your application container like this in order to link it to the MySQL container:

在其他contian中连接mariadb的方法
dockerrunnamesomeapplinksomemariadb:mysqldapplicationthatusesmysqlConnecttoMariaDBfromtheMySQLcommandlineclientThefollowingcommandstartsanothermariadbcontainerinstanceandrunsthemysqlcommandlineclientagainstyouroriginalmariadbcontainer,allowingyoutoexecuteSQLstatementsagainstyourdatabaseinstance: d o c k e r r u n – n a m e s o m e − a p p – l i n k s o m e − m a r i a d b : m y s q l − d a p p l i c a t i o n − t h a t − u s e s − m y s q l C o n n e c t t o M a r i a D B f r o m t h e M y S Q L c o m m a n d l i n e c l i e n t T h e f o l l o w i n g c o m m a n d s t a r t s a n o t h e r m a r i a d b c o n t a i n e r i n s t a n c e a n d r u n s t h e m y s q l c o m m a n d l i n e c l i e n t a g a i n s t y o u r o r i g i n a l m a r i a d b c o n t a i n e r , a l l o w i n g y o u t o e x e c u t e S Q L s t a t e m e n t s a g a i n s t y o u r d a t a b a s e i n s t a n c e : docker run -it --link some-mariadb:mysql --rm mariadb sh -c 'exec mysql -h" MYSQLPORT3306TCPADDRP M Y S Q L P O R T 3 306 T C P A D D R ” − P ” MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD”’

指定Contains 的network方式为host,其他应用可以通过host ip 和端口访问该contains

docker run –network=’host’ –name at-mariadb -v /usr/local/share/mariadb/custom_conf:/etc/mysql/conf.d -v /usr/local/share/mariadb/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=banrieen -d mariadb:latest
… where some-mariadb is the name of your original mariadb container.
This image can also be used as a client for non-Docker or remote MariaDB instances:
dockerrunitrmmariadbmysqlhsome.mysql.hostusomemysqluserpMoreinformationabouttheMySQLcommandlineclientcanbefoundintheMySQLdocumentationContainershellaccessandviewingMySQLlogsThedockerexeccommandallowsyoutoruncommandsinsideaDockercontainer.Thefollowingcommandlinewillgiveyouabashshellinsideyourmariadbcontainer: d o c k e r r u n − i t – r m m a r i a d b m y s q l − h s o m e . m y s q l . h o s t − u s o m e − m y s q l − u s e r − p M o r e i n f o r m a t i o n a b o u t t h e M y S Q L c o m m a n d l i n e c l i e n t c a n b e f o u n d i n t h e M y S Q L d o c u m e n t a t i o n C o n t a i n e r s h e l l a c c e s s a n d v i e w i n g M y S Q L l o g s T h e d o c k e r e x e c c o m m a n d a l l o w s y o u t o r u n c o m m a n d s i n s i d e a D o c k e r c o n t a i n e r . T h e f o l l o w i n g c o m m a n d l i n e w i l l g i v e y o u a b a s h s h e l l i n s i d e y o u r m a r i a d b c o n t a i n e r : docker exec -it some-mariadb bash
The MariaDB Server log is available through Docker’s container log:
dockerlogssomemariadbUsingacustomMySQLconfigurationfileTheMariaDBstartupconfigurationisspecifiedinthefile/etc/mysql/my.cnf,andthatfileinturnincludesanyfilesfoundinthe/etc/mysql/conf.ddirectorythatendwith.cnf.Settingsinfilesinthisdirectorywillaugmentand/oroverridesettingsin/etc/mysql/my.cnf.IfyouwanttouseacustomizedMySQLconfiguration,youcancreateyouralternativeconfigurationfileinadirectoryonthehostmachineandthenmountthatdirectorylocationas/etc/mysql/conf.dinsidethemariadbcontainer.If/my/custom/configfile.cnfisthepathandnameofyourcustomconfigurationfile,youcanstartyourmariadbcontainerlikethis(notethatonlythedirectorypathofthecustomconfigfileisusedinthiscommand): d o c k e r l o g s s o m e − m a r i a d b U s i n g a c u s t o m M y S Q L c o n f i g u r a t i o n f i l e T h e M a r i a D B s t a r t u p c o n f i g u r a t i o n i s s p e c i f i e d i n t h e f i l e / e t c / m y s q l / m y . c n f , a n d t h a t f i l e i n t u r n i n c l u d e s a n y f i l e s f o u n d i n t h e / e t c / m y s q l / c o n f . d d i r e c t o r y t h a t e n d w i t h . c n f . S e t t i n g s i n f i l e s i n t h i s d i r e c t o r y w i l l a u g m e n t a n d / o r o v e r r i d e s e t t i n g s i n / e t c / m y s q l / m y . c n f . I f y o u w a n t t o u s e a c u s t o m i z e d M y S Q L c o n f i g u r a t i o n , y o u c a n c r e a t e y o u r a l t e r n a t i v e c o n f i g u r a t i o n f i l e i n a d i r e c t o r y o n t h e h o s t m a c h i n e a n d t h e n m o u n t t h a t d i r e c t o r y l o c a t i o n a s / e t c / m y s q l / c o n f . d i n s i d e t h e m a r i a d b c o n t a i n e r . I f / m y / c u s t o m / c o n f i g − f i l e . c n f i s t h e p a t h a n d n a m e o f y o u r c u s t o m c o n f i g u r a t i o n f i l e , y o u c a n s t a r t y o u r m a r i a d b c o n t a i n e r l i k e t h i s ( n o t e t h a t o n l y t h e d i r e c t o r y p a t h o f t h e c u s t o m c o n f i g f i l e i s u s e d i n t h i s c o m m a n d ) : docker run –name some-mariadb -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag
This will start a new container some-mariadb where the MariaDB instance uses the combined startup settings from /etc/mysql/my.cnf and /etc/mysql/conf.d/config-file.cnf , with settings from the latter taking precedence.
Note that users on host systems with SELinux enabled may see issues with this. The current workaround is to assign the relevant SELinux policy type to your new config file so that the container will be allowed to mount it:
chconRtsvirtsandboxfilet/my/customConfigurationwithoutacnffileManyconfigurationoptionscanbepassedasflagstomysqld.Thiswillgiveyoutheflexibilitytocustomizethecontainerwithoutneedingacnffile.Forexample,ifyouwanttochangethedefaultencodingandcollationforalltablestouseUTF8(utf8mb4)justrunthefollowing: c h c o n − R t s v i r t s a n d b o x f i l e t / m y / c u s t o m C o n f i g u r a t i o n w i t h o u t a c n f f i l e M a n y c o n f i g u r a t i o n o p t i o n s c a n b e p a s s e d a s f l a g s t o m y s q l d . T h i s w i l l g i v e y o u t h e f l e x i b i l i t y t o c u s t o m i z e t h e c o n t a i n e r w i t h o u t n e e d i n g a c n f f i l e . F o r e x a m p l e , i f y o u w a n t t o c h a n g e t h e d e f a u l t e n c o d i n g a n d c o l l a t i o n f o r a l l t a b l e s t o u s e U T F − 8 ( u t f 8 m b 4 ) j u s t r u n t h e f o l l o w i n g : docker run –name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci
If you would like to see a complete list of available options, just run:
dockerrunitrmmariadb:tagverbosehelpEnvironmentVariablesWhenyoustartthemariadbimage,youcanadjusttheconfigurationoftheMariaDBinstancebypassingoneormoreenvironmentvariablesonthedockerruncommandline.Donotethatnoneofthevariablesbelowwillhaveanyeffectifyoustartthecontainerwithadatadirectorythatalreadycontainsadatabase:anypreexistingdatabasewillalwaysbeleftuntouchedoncontainerstartup.MYSQLROOTPASSWORDThisvariableismandatoryandspecifiesthepasswordthatwillbesetfortheMariaDBrootsuperuseraccount.Intheaboveexample,itwassettomysecretpw.MYSQLDATABASEThisvariableisoptionalandallowsyoutospecifythenameofadatabasetobecreatedonimagestartup.Ifauser/passwordwassupplied(seebelow)thenthatuserwillbegrantedsuperuseraccess(correspondingtoGRANTALL)tothisdatabase.MYSQLUSER,MYSQLPASSWORDThesevariablesareoptional,usedinconjunctiontocreateanewuserandtosetthatuserspassword.Thisuserwillbegrantedsuperuserpermissions(seeabove)forthedatabasespecifiedbytheMYSQLDATABASEvariable.Bothvariablesarerequiredforausertobecreated.Donotethatthereisnoneedtousethismechanismtocreatetherootsuperuser,thatusergetscreatedbydefaultwiththepasswordspecifiedbytheMYSQLROOTPASSWORDvariable.MYSQLALLOWEMPTYPASSWORDThisisanoptionalvariable.Settoyestoallowthecontainertobestartedwithablankpasswordfortherootuser.NOTE:Settingthisvariabletoyesisnotrecommendedunlessyoureallyknowwhatyouaredoing,sincethiswillleaveyourMariaDBinstancecompletelyunprotected,allowinganyonetogaincompletesuperuseraccess.MYSQLRANDOMROOTPASSWORDThisisanoptionalvariable.Settoyestogeneratearandominitialpasswordfortherootuser(usingpwgen).Thegeneratedrootpasswordwillbeprintedtostdout(GENERATEDROOTPASSWORD:..).InitializingafreshinstanceWhenacontainerisstartedforthefirsttime,anewdatabasewiththespecifiednamewillbecreatedandinitializedwiththeprovidedconfigurationvariables.Furthermore,itwillexecutefileswithextensions.sh,.sqland.sql.gzthatarefoundin/dockerentrypointinitdb.d.Fileswillbeexecutedinalphabeticalorder.YoucaneasilypopulateyourmariadbservicesbymountingaSQLdumpintothatdirectoryandprovidecustomimageswithcontributeddata.SQLfileswillbeimportedbydefaulttothedatabasespecifiedbytheMYSQLDATABASEvariable.CaveatsWheretoStoreDataImportantnote:ThereareseveralwaystostoredatausedbyapplicationsthatruninDockercontainers.Weencourageusersofthemariadbimagestofamiliarizethemselveswiththeoptionsavailable,including:LetDockermanagethestorageofyourdatabasedatabywritingthedatabasefilestodiskonthehostsystemusingitsowninternalvolumemanagement.Thisisthedefaultandiseasyandfairlytransparenttotheuser.Thedownsideisthatthefilesmaybehardtolocatefortoolsandapplicationsthatrundirectlyonthehostsystem,i.e.outsidecontainers.Createadatadirectoryonthehostsystem(outsidethecontainer)andmountthistoadirectoryvisiblefrominsidethecontainer.Thisplacesthedatabasefilesinaknownlocationonthehostsystem,andmakesiteasyfortoolsandapplicationsonthehostsystemtoaccessthefiles.Thedownsideisthattheuserneedstomakesurethatthedirectoryexists,andthate.g.directorypermissionsandothersecuritymechanismsonthehostsystemaresetupcorrectly.TheDockerdocumentationisagoodstartingpointforunderstandingthedifferentstorageoptionsandvariations,andtherearemultipleblogsandforumpostingsthatdiscussandgiveadviceinthisarea.Wewillsimplyshowthebasicprocedurehereforthelatteroptionabove:Createadatadirectoryonasuitablevolumeonyourhostsystem,e.g./my/own/datadir.Startyourmariadbcontainerlikethis: d o c k e r r u n − i t – r m m a r i a d b : t a g – v e r b o s e – h e l p E n v i r o n m e n t V a r i a b l e s W h e n y o u s t a r t t h e m a r i a d b i m a g e , y o u c a n a d j u s t t h e c o n f i g u r a t i o n o f t h e M a r i a D B i n s t a n c e b y p a s s i n g o n e o r m o r e e n v i r o n m e n t v a r i a b l e s o n t h e d o c k e r r u n c o m m a n d l i n e . D o n o t e t h a t n o n e o f t h e v a r i a b l e s b e l o w w i l l h a v e a n y e f f e c t i f y o u s t a r t t h e c o n t a i n e r w i t h a d a t a d i r e c t o r y t h a t a l r e a d y c o n t a i n s a d a t a b a s e : a n y p r e − e x i s t i n g d a t a b a s e w i l l a l w a y s b e l e f t u n t o u c h e d o n c o n t a i n e r s t a r t u p . M Y S Q L R O O T P A S S W O R D T h i s v a r i a b l e i s m a n d a t o r y a n d s p e c i f i e s t h e p a s s w o r d t h a t w i l l b e s e t f o r t h e M a r i a D B r o o t s u p e r u s e r a c c o u n t . I n t h e a b o v e e x a m p l e , i t w a s s e t t o m y − s e c r e t − p w . M Y S Q L D A T A B A S E T h i s v a r i a b l e i s o p t i o n a l a n d a l l o w s y o u t o s p e c i f y t h e n a m e o f a d a t a b a s e t o b e c r e a t e d o n i m a g e s t a r t u p . I f a u s e r / p a s s w o r d w a s s u p p l i e d ( s e e b e l o w ) t h e n t h a t u s e r w i l l b e g r a n t e d s u p e r u s e r a c c e s s ( c o r r e s p o n d i n g t o G R A N T A L L ) t o t h i s d a t a b a s e . M Y S Q L U S E R , M Y S Q L P A S S W O R D T h e s e v a r i a b l e s a r e o p t i o n a l , u s e d i n c o n j u n c t i o n t o c r e a t e a n e w u s e r a n d t o s e t t h a t u s e r ′ s p a s s w o r d . T h i s u s e r w i l l b e g r a n t e d s u p e r u s e r p e r m i s s i o n s ( s e e a b o v e ) f o r t h e d a t a b a s e s p e c i f i e d b y t h e M Y S Q L D A T A B A S E v a r i a b l e . B o t h v a r i a b l e s a r e r e q u i r e d f o r a u s e r t o b e c r e a t e d . D o n o t e t h a t t h e r e i s n o n e e d t o u s e t h i s m e c h a n i s m t o c r e a t e t h e r o o t s u p e r u s e r , t h a t u s e r g e t s c r e a t e d b y d e f a u l t w i t h t h e p a s s w o r d s p e c i f i e d b y t h e M Y S Q L R O O T P A S S W O R D v a r i a b l e . M Y S Q L A L L O W E M P T Y P A S S W O R D T h i s i s a n o p t i o n a l v a r i a b l e . S e t t o y e s t o a l l o w t h e c o n t a i n e r t o b e s t a r t e d w i t h a b l a n k p a s s w o r d f o r t h e r o o t u s e r . N O T E : S e t t i n g t h i s v a r i a b l e t o y e s i s n o t r e c o m m e n d e d u n l e s s y o u r e a l l y k n o w w h a t y o u a r e d o i n g , s i n c e t h i s w i l l l e a v e y o u r M a r i a D B i n s t a n c e c o m p l e t e l y u n p r o t e c t e d , a l l o w i n g a n y o n e t o g a i n c o m p l e t e s u p e r u s e r a c c e s s . M Y S Q L R A N D O M R O O T P A S S W O R D T h i s i s a n o p t i o n a l v a r i a b l e . S e t t o y e s t o g e n e r a t e a r a n d o m i n i t i a l p a s s w o r d f o r t h e r o o t u s e r ( u s i n g p w g e n ) . T h e g e n e r a t e d r o o t p a s s w o r d w i l l b e p r i n t e d t o s t d o u t ( G E N E R A T E D R O O T P A S S W O R D : … . . ) . I n i t i a l i z i n g a f r e s h i n s t a n c e W h e n a c o n t a i n e r i s s t a r t e d f o r t h e f i r s t t i m e , a n e w d a t a b a s e w i t h t h e s p e c i f i e d n a m e w i l l b e c r e a t e d a n d i n i t i a l i z e d w i t h t h e p r o v i d e d c o n f i g u r a t i o n v a r i a b l e s . F u r t h e r m o r e , i t w i l l e x e c u t e f i l e s w i t h e x t e n s i o n s . s h , . s q l a n d . s q l . g z t h a t a r e f o u n d i n / d o c k e r − e n t r y p o i n t − i n i t d b . d . F i l e s w i l l b e e x e c u t e d i n a l p h a b e t i c a l o r d e r . Y o u c a n e a s i l y p o p u l a t e y o u r m a r i a d b s e r v i c e s b y m o u n t i n g a S Q L d u m p i n t o t h a t d i r e c t o r y a n d p r o v i d e c u s t o m i m a g e s w i t h c o n t r i b u t e d d a t a . S Q L f i l e s w i l l b e i m p o r t e d b y d e f a u l t t o t h e d a t a b a s e s p e c i f i e d b y t h e M Y S Q L D A T A B A S E v a r i a b l e . C a v e a t s W h e r e t o S t o r e D a t a I m p o r t a n t n o t e : T h e r e a r e s e v e r a l w a y s t o s t o r e d a t a u s e d b y a p p l i c a t i o n s t h a t r u n i n D o c k e r c o n t a i n e r s . W e e n c o u r a g e u s e r s o f t h e m a r i a d b i m a g e s t o f a m i l i a r i z e t h e m s e l v e s w i t h t h e o p t i o n s a v a i l a b l e , i n c l u d i n g : L e t D o c k e r m a n a g e t h e s t o r a g e o f y o u r d a t a b a s e d a t a b y w r i t i n g t h e d a t a b a s e f i l e s t o d i s k o n t h e h o s t s y s t e m u s i n g i t s o w n i n t e r n a l v o l u m e m a n a g e m e n t . T h i s i s t h e d e f a u l t a n d i s e a s y a n d f a i r l y t r a n s p a r e n t t o t h e u s e r . T h e d o w n s i d e i s t h a t t h e f i l e s m a y b e h a r d t o l o c a t e f o r t o o l s a n d a p p l i c a t i o n s t h a t r u n d i r e c t l y o n t h e h o s t s y s t e m , i . e . o u t s i d e c o n t a i n e r s . C r e a t e a d a t a d i r e c t o r y o n t h e h o s t s y s t e m ( o u t s i d e t h e c o n t a i n e r ) a n d m o u n t t h i s t o a d i r e c t o r y v i s i b l e f r o m i n s i d e t h e c o n t a i n e r . T h i s p l a c e s t h e d a t a b a s e f i l e s i n a k n o w n l o c a t i o n o n t h e h o s t s y s t e m , a n d m a k e s i t e a s y f o r t o o l s a n d a p p l i c a t i o n s o n t h e h o s t s y s t e m t o a c c e s s t h e f i l e s . T h e d o w n s i d e i s t h a t t h e u s e r n e e d s t o m a k e s u r e t h a t t h e d i r e c t o r y e x i s t s , a n d t h a t e . g . d i r e c t o r y p e r m i s s i o n s a n d o t h e r s e c u r i t y m e c h a n i s m s o n t h e h o s t s y s t e m a r e s e t u p c o r r e c t l y . T h e D o c k e r d o c u m e n t a t i o n i s a g o o d s t a r t i n g p o i n t f o r u n d e r s t a n d i n g t h e d i f f e r e n t s t o r a g e o p t i o n s a n d v a r i a t i o n s , a n d t h e r e a r e m u l t i p l e b l o g s a n d f o r u m p o s t i n g s t h a t d i s c u s s a n d g i v e a d v i c e i n t h i s a r e a . W e w i l l s i m p l y s h o w t h e b a s i c p r o c e d u r e h e r e f o r t h e l a t t e r o p t i o n a b o v e : C r e a t e a d a t a d i r e c t o r y o n a s u i t a b l e v o l u m e o n y o u r h o s t s y s t e m , e . g . / m y / o w n / d a t a d i r . S t a r t y o u r m a r i a d b c o n t a i n e r l i k e t h i s : docker run –name some-mariadb -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag
The -v /my/own/datadir:/var/lib/mysql part of the command mounts the /my/own/datadir directory from the underlying host system as /var/lib/mysql inside the container, where MySQL by default will write its data files.
Note that users on host systems with SELinux enabled may see issues with this. The current workaround is to assign the relevant SELinux policy type to the new data directory so that the container will be allowed to access it:
chconRtsvirtsandboxfilet/my/own/datadirNoconnectionsuntilMySQLinitcompletesIfthereisnodatabaseinitializedwhenthecontainerstarts,thenadefaultdatabasewillbecreated.Whilethisistheexpectedbehavior,thismeansthatitwillnotacceptincomingconnectionsuntilsuchinitializationcompletes.Thismaycauseissueswhenusingautomationtools,suchasdockercompose,whichstartseveralcontainerssimultaneously.UsageagainstanexistingdatabaseIfyoustartyourmariadbcontainerinstancewithadatadirectorythatalreadycontainsadatabase(specifically,amysqlsubdirectory),the c h c o n − R t s v i r t s a n d b o x f i l e t / m y / o w n / d a t a d i r N o c o n n e c t i o n s u n t i l M y S Q L i n i t c o m p l e t e s I f t h e r e i s n o d a t a b a s e i n i t i a l i z e d w h e n t h e c o n t a i n e r s t a r t s , t h e n a d e f a u l t d a t a b a s e w i l l b e c r e a t e d . W h i l e t h i s i s t h e e x p e c t e d b e h a v i o r , t h i s m e a n s t h a t i t w i l l n o t a c c e p t i n c o m i n g c o n n e c t i o n s u n t i l s u c h i n i t i a l i z a t i o n c o m p l e t e s . T h i s m a y c a u s e i s s u e s w h e n u s i n g a u t o m a t i o n t o o l s , s u c h a s d o c k e r − c o m p o s e , w h i c h s t a r t s e v e r a l c o n t a i n e r s s i m u l t a n e o u s l y . U s a g e a g a i n s t a n e x i s t i n g d a t a b a s e I f y o u s t a r t y o u r m a r i a d b c o n t a i n e r i n s t a n c e w i t h a d a t a d i r e c t o r y t h a t a l r e a d y c o n t a i n s a d a t a b a s e ( s p e c i f i c a l l y , a m y s q l s u b d i r e c t o r y ) , t h e MYSQL_ROOT_PASSWORD variable should be omitted from the run command line; it will in any case be ignored, and the pre-existing database will not be changed in any way.
Creating database dumps
Most of the normal tools will work, although their usage might be a little convoluted in some cases to ensure they have access to the mysqld server. A simple way to ensure this is to use docker exec and run the tool from the same container, similar to the following:
dockerexecsomemariadbshcexecmysqldumpalldatabasesurootp" d o c k e r e x e c s o m e − m a r i a d b s h − c ′ e x e c m y s q l d u m p − − a l l − d a t a b a s e s − u r o o t − p " MYSQL_ROOT_PASSWORD”’ > /some/path/on/your/host/all-databases.sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值