• 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)
                                               

        

  • 相关阅读:
    join_tab计算代价
    outer join test
    突然觉得mysql优化器蛮简单
    将数据库字段从float修改为decimal
    小米初体验
    简述安装android开发环境
    Rust语言:安全地并发
    awk里的各种坑
    ubuntu下使用C语言开发一个cgi程序
    Ubuntu下安装和配置Apache2
  • 原文地址:https://www.cnblogs.com/xiaocheche/p/10442456.html
Copyright © 2020-2023  润新知