本文目錄一覽:
- 1、linux怎麼修改mysql資料庫臨時表空間大小
- 2、linux系統mysql資料庫怎麼修改資料庫存放路徑
- 3、如何修改Linux伺服器的MySQL資料庫root密碼
- 4、如何在linux系統修改mysql資料庫
- 5、如何修改linux伺服器上的mysql資料庫密碼
linux怎麼修改mysql資料庫臨時表空間大小
先來說說臨時表的概念。 臨時表顧名思義,就是臨時的,用完銷毀掉的表。 數據既可以保存在臨時的文件系統上,也可以保存在固定的磁碟文件系統上。 臨時表有下面幾種:
1全局臨時表
這種臨時表從資料庫實例啟動後開始生效,在資料庫實例銷毀後失效。在MySQL裡面這種臨時表對應的是內存表,即memory引擎。
2會話級別臨時表
這種臨時表在用戶登錄系統成功後生效,在用戶退出時失效。在MySQL里的臨時表指的就是以 create temporary table 這樣的關鍵詞創建的表。
3事務級別臨時表
這種臨時表在事務開始時生效,事務提交或者回滾後失效。 在MySQL裡面沒有這種臨時表,必須利用會話級別的臨時表間接實現。
4檢索級別臨時表
這種臨時表在SQL語句執行之間產生,執行完畢後失效。 在MySQL裡面這種臨時表不是很固定,跟隨MySQL默認存儲引擎來變化。比如默認存儲引擎是MyISAM,臨時表的引擎就是MyISAM,並且文件生成形式以及數據運作形式和MyISAM一樣,只是數據保存在內存里;如果默認引擎是INNODB,那麼臨時表的引擎就是INNODB,此時它的所有信息都保存在共享表空間ibdata裡面。
MySQL 5.7對於InnoDB存儲引擎的臨時表空間做了優化。在MySQL 5.7之前,INNODB引擎的臨時表都保存在ibdata裡面,而ibdata的貪婪式磁碟佔用導致臨時表的創建與刪除對其他正常表產生非常大的性能影響。在MySQL5.7中,對於臨時表做了下面兩個重要方面的優化:
MySQL5.7 把臨時表的數據以及回滾信息(僅限於未壓縮表)從共享表空間裡面剝離出來,形成自己單獨的表空間,參數為innodb_temp_data_file_path。
在MySQL5.7 中把臨時表的相關檢索信息保存在系統信息表中:information_schema.innodb_temp_table_info. 而MySQL 5.7之前的版本想要查看臨時表的系統信息是沒有太好的辦法。
需要注意的一點就是,雖然INNODB臨時表有自己的表空間,但是目前還不能自己定義臨時表空間文件的保存路徑,只能是繼承innodb_data_home_dir。此時如果想要拿其他的磁碟,比如內存檔來充當臨時表空間的保存地址,只能用老辦法,做軟鏈。舉個小例子:
我現在用的OS是 Ubuntu12.X,想用tmpfs文件系統充當臨時表空間,
root@ytt-master-VirtualBox:/usr/local/mysql/data# ln -s/run/shm/ /usr/local/mysql/data/tmp_space2
root@ytt-master-VirtualBox:/usr/local/mysql/data#ls -l | grep ‘shm’
lrwxrwxrwx1 root root 9 Nov 13 10:28tmp_space2 – /run/shm/
然後把
innodb_temp_data_file_path=tmp_space2/ibtmp2:200M:autoextend
添加到my.cnf里的[mysqld]下面一行
重啟MySQL服務後,
mysqlselect @@innodb_temp_data_file_path\G
***************************1. row ***************************
@@innodb_temp_data_file_path:tmp_space2/ibtmp2:200M:autoextend
1 rowin set (0.00 sec)
先寫一個批量創建臨時表的存儲過程:
DELIMITER$$
USE`t_girl`$$
DROPPROCEDURE IF EXISTS `sp_create_temporary_table`$$
CREATEDEFINER=`root`@`localhost` PROCEDURE `sp_create_temporary_table`(
IN f_cnt INT UNSIGNED )
BEGIN
DECLARE i INT UNSIGNED DEFAULT 1;
WHILE i = f_cnt
DO
SET @stmt = CONCAT(‘create temporarytable tmp’,i,’ ( id int, tmp_desc varchar(60));’);
PREPARE s1 FROM @stmt;
EXECUTE s1;
SET i = i + 1;
END WHILE;
DROP PREPARE s1;
END$$
DELIMITER;
現在來創建10張臨時表:
mysqlcall sp_create_temporary_table(10);
QueryOK, 0 rows affected (0.07 sec)
如果在以前,我們只知道創建了10張臨時表,但是只能憑記憶或者手工記錄下來臨時表的名字等信息。
現在可以直接從數據字典裡面檢索相關數據。
mysql select * frominformation_schema.innodb_temp_table_info;
+———-+————–+——–+——-+———————-+—————+
|TABLE_ID | NAME | N_COLS | SPACE| PER_TABLE_TABLESPACE | IS_COMPRESSED |
+———-+————–+——–+——-+———————-+—————+
| 56 | #sql1705_2_9 | 5 | 36 | FALSE | FALSE |
| 55 | #sql1705_2_8 | 5 | 36 | FALSE |FALSE |
| 54 | #sql1705_2_7 | 5 | 36 | FALSE | FALSE |
| 53 | #sql1705_2_6 | 5 | 36 | FALSE | FALSE |
| 52 | #sql1705_2_5 | 5 | 36 | FALSE |FALSE |
| 51 | #sql1705_2_4 | 5 | 36 | FALSE | FALSE |
| 50 | #sql1705_2_3 | 5 | 36 | FALSE | FALSE |
| 49 | #sql1705_2_2 | 5 | 36 | FALSE |FALSE |
| 48 | #sql1705_2_1 | 5 | 36 | FALSE | FALSE |
| 47 | #sql1705_2_0 | 5 | 36 | FALSE | FALSE |
+———-+————–+——–+——-+———————-+—————+
10rows in set (0.00 sec)
功能性我就寫到這裡,大家性能方面如果有興趣可以找時間去測試。
linux系統mysql資料庫怎麼修改資料庫存放路徑
mnt目錄下建立mysql_data目錄
#cd /mnt
#mkdir mysql_data
把MySQL服務服務停掉。
#service mysql stop
把/var/lib/mysql整個目錄移到/mnt/mysql_data。
#mv /usr/local/mysql/data /mnt/mysql_data
重新設置數據許可權。
#cd /mnt/mysql_data
修改my.cnf配置文件
#vi /etc/my.cnf
指明mysql.sock文件的產生位置。用符號#注釋掉原來socket,
修改MySQL啟動腳本。
#vi /etc/init.d/mysql
找到datadir。
datadir = /mnt/mysql_data
7
重啟mysql服務
#service mysql start
好了,至此資料庫目錄位置已遷移完畢。
如何修改Linux伺服器的MySQL資料庫root密碼
分兩種情況
一、擁有原來的myql的root的密碼;
方法一:
在mysql系統外,使用mysqladmin
# mysqladmin -u root -p password “test123”
Enter password: 【輸入原來的密碼】
方法二:
通過登錄mysql系統,
# mysql -uroot -p
Enter password: 【輸入原來的密碼】
mysqluse mysql;
mysql update user set password=passworD(“test”) where user=’root’;
mysql flush privileges;
mysql exit;
二、忘記原來的myql的root的密碼;
首先,你必須要有操作系統的root許可權了。要是連繫統的root許可權都沒有的話,先考慮root系統再走下面的步驟。
類似於安全模式登錄系統,有人建議說是pkill mysql,但是我不建議哈。因為當你執行了這個命令後,會導致這樣的狀況:
/etc/init.d/mysqld status
mysqld dead but subsys locked
這樣即使你是在安全模式下啟動mysql都未必會有用的,所以一般是這樣/etc/init.d/mysqld stop,如果你不幸先用了pkill,那麼就start一下再stop咯。
# mysqld_safe –skip-grant-tables
,表示在後台運行,不再後台運行的話,就再打開一個終端咯。
# mysql
mysql use mysql;
mysql UPDATE user SET password=password(“test123”) WHERE user=’root’;
mysql flush privileges;
mysql exit;
##本來mysql是不分大小寫的,但是這個是修改的mysql中的mysql資料庫的具體的值,要注意到。
如何在linux系統修改mysql資料庫
查找以前是否安裝有mysql,使用下面命令:
rpm -qa|grep -i mysql
如果顯示有如下包則說明已安裝mysql
mysql-4.1.12-3.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1
如果已安裝,則需要刪除已安裝的資料庫,使用以下命令來刪除資料庫
刪除命令:rpm -e –nodeps 包名
( rpm -ev mysql-4.1.12-3.RHEL4.1 )
刪除老版本mysql的開發頭文件和庫
命令:rm -fr /usr/lib/mysql
rm -fr /usr/include/mysql
注意:卸載後/var/lib/mysql中的數據及/etc/my.cnf不會刪除,如果確定沒用後就手工刪除
rm -f /etc/my.cnf
rm -fr /var/lib/mysql
下載mysql的rpm包
可以通過wget下載具體的地址因為不能用鏈接請大家去官網去找
(1)MySQL-server-5.6.10-1.rhel5.x86_64.rpm:MySQL伺服器;
(2)MySQL-client-5.6.10-1.rhel5.x86_64.rpm:MySQL客戶端;
(3)MySQL-devel-5.6.10-1.rhel5.x86_64.rpm:Mysql開發依賴包。
下載後放到Liunx伺服器中,如圖所示
安裝MySQL Server的rpm包
rpm -ivh MySQL-server-5.6.21-1.linux_glibc2.5.x86_64.rpm
安裝過程如圖所示
安裝完成後會生成root用戶的隨機密碼,請使用「cat /root/.mysql_secret」或類似命令進行查看。
如何修改linux伺服器上的mysql資料庫密碼
1. 首先用管理員許可權登陸Linux;
2. 輸入:vi /etc/my.cnf 回車。然後按「i」鍵盤,在這個文件中的最後一行輸入:skip-grant-tables
然後按 esc鍵,然後輸入「:wq」保存並退出;
3.重啟MySQL服務
輸入:service mysqld restart回車;
4.輸入 mysql -uroot -p;然後提示你輸入密碼,直接回車就可以進入mysql資料庫了!
原創文章,作者:Q1YP7,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129220.html