Mysql工作記錄之修改默認存儲引擎及重設root用戶密碼

1》修改默認存儲引擎方法

    修改配置文件,然後重啟mysql服務;
        [root@CHW mysql]# cat /etc/my.cnf
                            [mysqld]
                            datadir=/var/lib/mysql
                            socket=/var/lib/mysql/mysql.sock
                            user=root
                            skip-grant-tables
                           default-storage-engine=INNODB
                            # Disabling symbolic-links is recommended to prevent assorted security risks
                            symbolic-links=0

                            [mysqld_safe]
                            log-error=/var/log/mysqld.log
                            pid-file=/var/run/mysqld/mysqld.pid
 

2》字段類型char, varchar,text的區別
                           
                            text、char、varchar是數據在數據庫中的存放策略問題,為了合理應用存儲空間,是數據庫服務器對數據類型劃分的方式,對於應用

           程序,把它們和string對應就可以了;
                           
        char:是固定長度的,但是長度範圍是0~255,当我們想要存儲一個長度不足255的字符時,Mysql會用空格來填充剩下的字符,因此

            在讀取數據時,char類型的數據要進行處理,把後面的空格去除;   
                             varchar:關於varchar,有的說最大長度是255,也有的說是65535,查閱很多資料后發現是這樣的:varchar類型在5.0.3以下的版本中     

              的最大 長度限制為255,而在5.0.3及以上的版本中,varchar數據類型的長度支持到了65535,也就是說可以存放65532個字

            節(注意是字節而不是字符)的數據(起始位和結束位占去了3個字節),也就是說在5.0.3以下版本中需要使用固定的TEX

            T或BLOB格式存放的數據,可以在高版本中使用可變長的varchar來存放,這樣就能有效的減少數據庫文件的大小;     
                            
                             text:與char和varchar不同的是,text不可以有默認值,其最大長度是2的16次方-1;
                            
                             總結如下:
                                       
                                        經常變化的字段用varchar;
                                       
                                        知道固定長度的用char;
                                       
                                        儘量用varchar;
                                       
                                        超過255字符的只能用varchar或者text;
                                       
                                        能用varchar的地方不用text;
                                       
                                        char是一種固定長度的類型,varchar則是一種可變長度的類型,在char(M)類型的數據列里,每個值都佔用M個字節,如果某個   

                長度小於M,Mysql就會在它的右邊用空格字符補足(在檢索操作中那些填補出來的空格字符將被去掉);在varchar(M)類

                型的數據列中,每個值只佔用剛好夠用的字節再加上一個用來記錄其長度的字節(即總長度為L+1字節);比如char(255) 

                                            和varchar(255),在存儲字符串“hello world”的時候,char會用一塊255的空間放那11個字符,而varchar就不會用255個,

                                              他先計算長度后只用11個再加上計算得到字符串長度信息,一般1-2個byte來,這樣varchar在存儲不確定長度的時候會大

               大減少存儲空間;
                                       
                                        某種原因char固定長度,所以在處理速度上要比varchar快速很多,但是相對浪費存儲空間,所以對存儲要求不高,但在速度

      上有要求 的可以使用char類型,反之可以用varchar類型來實例;一個關於varchar的問題是varchar他既然可以自動適應存儲空間,那我

      們varchar(8)和varchar(255)存儲應該都是一樣的,那每次表設計的時候往大的方向去好了,免得以後不夠用麻煩,這個思路是不對的

      ,mysql會把表信息放到內存中(查詢第一次后,就緩存住了,linux下很明顯,但windows下似乎沒有,不知道為啥),這時內存的申請是

      按照固定長度來的,如果varchar很大就會有問題,所以還是應該按需索取;

3》root用戶密碼忘記以後重新設置
                                    1)修改配置文件,添加如下語句
                                               
                                                [root@CHW scripts]# cat /etc/my.cnf
                                                [mysqld]
                                                datadir=/var/lib/mysql
                                                socket=/var/lib/mysql/mysql.sock
                                                user=root
                                               
skip-grant-tables
                                                default-storage-engine=INNODB
                                                # Disabling symbolic-links is recommended to prevent assorted security risks
                                                symbolic-links=0
                                                   
                                    2)重新啟動mysql服務,用mysql直接進入;
                                   
                                    3)使用如下命令重新設置root用戶的密碼;
                                             mysql> update mysql.user set password=PASSWORD("aixocm") where user="root";
                                                Query OK, 3 rows affected (0.00 sec)
                                                Rows matched: 3  Changed: 3  Warnings: 0
                                    4)刷新權限
                                           
                                             mysql> flush privileges;
                                            Query OK, 0 rows affected (0.00 sec)
                                           

    

原文地址:https://www.cnblogs.com/xiaocheche/p/10442456.html