<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>MySQL Archives - Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/danh-muc/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/danh-muc/mysql/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Fri, 06 Feb 2026 08:34:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>MySQL Archives - Tomoshare</title>
	<link>https://blog.tomosia.com.vn/danh-muc/mysql/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SQL Partitioning: &#8220;Chia Để Trị&#8221; Dữ Liệu Khổng Lồ</title>
		<link>https://blog.tomosia.com.vn/sql-partitioning-chia-de-tri-du-lieu-khong-lo/</link>
					<comments>https://blog.tomosia.com.vn/sql-partitioning-chia-de-tri-du-lieu-khong-lo/#respond</comments>
		
		<dc:creator><![CDATA[Hoang Nam]]></dc:creator>
		<pubDate>Fri, 06 Feb 2026 08:34:06 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Kinh nghiệm]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[partition]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Sql]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=4215</guid>

					<description><![CDATA[<p>Database Của Bạn Đang &#8220;Kêu Cứu&#8221; Vì Chậm? Đã Đến Lúc &#8220;Chia Để Trị&#8221;! Bạn có đang &#8220;đau&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/sql-partitioning-chia-de-tri-du-lieu-khong-lo/">SQL Partitioning: &#8220;Chia Để Trị&#8221; Dữ Liệu Khổng Lồ</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 id="database-cua-ban-dang-keu-cuu-vi-cham-da-den-luc-chia-de-tri" class="wp-block-heading">Database Của Bạn Đang &#8220;Kêu Cứu&#8221; Vì Chậm? Đã Đến Lúc &#8220;Chia Để Trị&#8221;!</h2>



<p>Bạn có đang &#8220;đau đầu&#8221; vì một câu query SQL, dù rất đơn giản, lại chạy mãi không xong trên một bảng dữ liệu ngày càng &#8220;béo phì&#8221;? Bạn là dev đang săn lùng từng mili giây hiệu suất, là tester đang vật lộn với những bài test performance, hay đơn giản là người mới tò mò về thế giới dữ liệu?</p>



<p>Nếu câu trả lời là &#8220;có&#8221;, thì đây chính là &#8220;liều thuốc&#8221; bạn cần.</p>



<p>Hãy quên đi những định nghĩa khô khan. Hôm nay, chúng ta sẽ khám phá <strong>SQL Partitioning</strong> – một kỹ thuật &#8220;chia để trị&#8221; đầy quyền năng – qua những ví dụ đời thường và những bí kíp thực chiến mà bạn sẽ không tìm thấy trong sách vở.</p>



<h2 id="1-sql-partitioning-la-gi" class="wp-block-heading">1. SQL Partitioning Là Gì? </h2>



<p>Trước hết, Hãy tưởng tượng database của bạn là một cái nhà kho khổng lồ, chứa hàng triệu món đồ (dữ liệu). Khi cần tìm một món đồ, bạn phải chạy khắp cái nhà kho đó. Rất mất thời gian!</p>



<p>Tuy nhiên, nếu bạn chia nhà kho thành các <strong>gian nhỏ có nhãn rõ ràng</strong>, mọi thứ sẽ khác.</p>



<p><strong>SQL Partitioning</strong> chính là việc bạn thông minh sắp xếp nhà kho đó thành các <strong>gian hàng nhỏ hơn, được dán nhãn rõ ràng</strong> (gọi là các <em>partition</em> &#8211; phân vùng):</p>



<ul class="wp-block-list">
<li>Gian hàng &#8220;Hóa đơn năm 2023&#8221;</li>



<li>Gian hàng &#8220;Hóa đơn năm 2024&#8221;</li>



<li>Gian hàng &#8220;Hóa đơn năm 2025&#8221;</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2f363c;color:#d3d7dd">Code mẫu:</span><span role="button" tabindex="0" data-code="CREATE TABLE invoice (
    invoice_id INT,
    invoice_date DATE,
    amount DECIMAL(10,2)
)
PARTITION BY RANGE (YEAR(invoice_date)) (
    PARTITION p2022 VALUES LESS THAN (2023),
    PARTITION p2023 VALUES LESS THAN (2024),
    PARTITION p2024 VALUES LESS THAN (2025),
    PARTITION p_future VALUES LESS THAN MAXVALUE
);" style="color:#e1e4e8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki github-dark" style="background-color: #24292e" tabindex="0"><code><span class="line"><span style="color: #F97583">CREATE</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">TABLE</span><span style="color: #E1E4E8"> </span><span style="color: #B392F0">invoice</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">    invoice_id </span><span style="color: #F97583">INT</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">    invoice_date </span><span style="color: #F97583">DATE</span><span style="color: #E1E4E8">,</span></span>
<span class="line"><span style="color: #E1E4E8">    amount </span><span style="color: #F97583">DECIMAL</span><span style="color: #E1E4E8">(</span><span style="color: #79B8FF">10</span><span style="color: #E1E4E8">,</span><span style="color: #79B8FF">2</span><span style="color: #E1E4E8">)</span></span>
<span class="line"><span style="color: #E1E4E8">)</span></span>
<span class="line"><span style="color: #F97583">PARTITION</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">BY</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">RANGE</span><span style="color: #E1E4E8"> (</span><span style="color: #79B8FF">YEAR</span><span style="color: #E1E4E8">(invoice_date)) (</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">PARTITION</span><span style="color: #E1E4E8"> p2022 </span><span style="color: #F97583">VALUES</span><span style="color: #E1E4E8"> LESS THAN (</span><span style="color: #79B8FF">2023</span><span style="color: #E1E4E8">),</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">PARTITION</span><span style="color: #E1E4E8"> p2023 </span><span style="color: #F97583">VALUES</span><span style="color: #E1E4E8"> LESS THAN (</span><span style="color: #79B8FF">2024</span><span style="color: #E1E4E8">),</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">PARTITION</span><span style="color: #E1E4E8"> p2024 </span><span style="color: #F97583">VALUES</span><span style="color: #E1E4E8"> LESS THAN (</span><span style="color: #79B8FF">2025</span><span style="color: #E1E4E8">),</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">PARTITION</span><span style="color: #E1E4E8"> p_future </span><span style="color: #F97583">VALUES</span><span style="color: #E1E4E8"> LESS THAN MAXVALUE</span></span>
<span class="line"><span style="color: #E1E4E8">);</span></span></code></pre></div>



<p>Khi sếp yêu cầu bạn tìm hóa đơn tháng 12/2024, bạn chỉ việc đi thẳng đến gian hàng &#8220;Hóa đơn năm 2024&#8221; để tìm. Nhanh hơn gấp bội!</p>



<p>Quan trọng hơn, dù dữ liệu được chia nhỏ ra bên dưới, đối với ứng dụng của bạn nó vẫn là <strong>một bảng duy nhất</strong>. Đó chính là sự “thần kỳ” của partition.</p>



<h3 id="loi-ich-vang-cua-partitioning" class="wp-block-heading">Lợi ích VÀNG của Partitioning:</h3>



<ul class="wp-block-list">
<li><strong>Tăng tốc độ truy vấn &#8220;tên lửa&#8221;:</strong> Khi bạn lọc dữ liệu theo &#8220;nhãn&#8221; của gian hàng (ví dụ: <code>WHERE OrderDate BETWEEN '2024-01-01' AND '2024-12-31'</code>), hệ thống sẽ chỉ quét gian hàng &#8220;2024&#8221;, bỏ qua toàn bộ các gian hàng khác. Đây gọi là kỹ thuật <em>Partition Pruning</em> (cắt tỉa phân vùng).</li>



<li><strong>Quản lý dữ liệu dễ như trở bàn tay:</strong> Muốn xóa toàn bộ dữ liệu năm 2020? Thay vì chạy lệnh <code>DELETE</code> hàng triệu dòng và chờ &#8220;dài cổ&#8221;, bạn chỉ cần &#8220;dỡ&#8221; cả gian hàng 2020 đi. Xong!</li>



<li><strong>Bảo trì nhẹ nhàng hơn:</strong> Việc bảo trì (như rebuild index) trên một gian hàng nhỏ sẽ nhanh và ít ảnh hưởng đến hệ thống hơn là làm trên cả cái nhà kho.</li>
</ul>



<h2 id="2-cac-loai-vu-khi-phan-vung-pho-bien-chon-dung-thang-to" class="wp-block-heading">2. Các &#8220;Loại Vũ Khí&#8221; Phân Vùng Phổ Biến: Chọn Đúng, Thắng To</h2>



<p>Có 3 loại partitioning chính. Việc chọn đúng loại sẽ quyết định sự thành bại của bạn.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://blog.tomosia.com.vn/wp-content/uploads/2026/02/type-partition-1024x683.png" alt="" class="wp-image-4232" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2026/02/type-partition-1024x683.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2026/02/type-partition-300x200.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2026/02/type-partition-768x512.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2026/02/type-partition-380x253.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2026/02/type-partition-800x533.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2026/02/type-partition-1160x773.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2026/02/type-partition.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 id="range-partitioning-phan-vung-theo-khoang" class="wp-block-heading">RANGE Partitioning (Phân vùng theo Khoảng)</h3>



<ul class="wp-block-list">
<li><strong>Ý tưởng:</strong> Chia dữ liệu theo một khoảng giá trị liên tục.</li>



<li><strong>Ví dụ Kinh điển:</strong> Phân vùng bảng <code>Sales</code> theo cột <code>OrderDate</code>. Mỗi phân vùng chứa dữ liệu của một tháng hoặc một quý.</li>



<li><strong>Khi nào dùng:</strong> Cực kỳ hoàn hảo cho dữ liệu chuỗi thời gian (time-series) như logs, giao dịch, dữ liệu cảm biến IoT.</li>
</ul>



<h3 id="list-partitioning-phan-vung-theo-danh-sach" class="wp-block-heading">LIST Partitioning (Phân vùng theo Danh sách)</h3>



<ul class="wp-block-list">
<li><strong>Ý tưởng:</strong> Chia dữ liệu theo một danh sách các giá trị cụ thể.</li>



<li><strong>Ví dụ Kinh điển:</strong> Phân vùng bảng <code>Customers</code> theo cột <code>Region</code> (Vùng miền). Một phân vùng cho &#8216;Miền Bắc&#8217;, một cho &#8216;Miền Trung&#8217;, một cho &#8216;Miền Nam&#8217;.</li>



<li><strong>Khi nào dùng:</strong> Phù hợp khi cột phân vùng có một tập hợp các giá trị hữu hạn và rõ ràng (như Tỉnh/Thành, Trạng thái, Loại sản phẩm).</li>
</ul>



<h3 id="hash-partitioning-phan-vung-theo-ham-bam" class="wp-block-heading">HASH Partitioning (Phân vùng theo Hàm băm)</h3>



<ul class="wp-block-list">
<li><strong>Ý tưởng:</strong> Tự động phân bổ đều dữ liệu vào một số lượng phân vùng đã định trước.</li>



<li><strong>Ví dụ Kinh điển:</strong> Phân vùng bảng <code>Users</code> theo <code>user_id</code>. Hệ thống sẽ dùng một thuật toán để đảm bảo dữ liệu người dùng được chia đều vào các phân vùng.</li>



<li><strong>Khi nào dùng:</strong> Dùng khi bạn không có cột nào phù hợp cho RANGE hay LIST, và mục tiêu chính là phân tán đều dữ liệu để tránh &#8220;điểm nóng&#8221;.</li>
</ul>



<h2 id="3-bi-kip-thuc-chien-nhung-cu-lua-can-tranh" class="wp-block-heading">3. Bí Kíp Thực Chiến &amp; Những &#8220;Cú Lừa&#8221; Cần Tránh</h2>



<p>Lý thuyết màu hồng, nhưng thực tế thì&#8230; không phải lúc nào cũng vậy. Đây là những kinh nghiệm xương máu giúp bạn tránh đi vào &#8220;vết xe đổ&#8221;.</p>



<h3 id="hoi-dap-nhanh-cac-loi-sai-kinh-dien-khi-dung-partitioning" class="wp-block-heading">Hỏi &amp; Đáp Nhanh: Các Lỗi Sai Kinh Điển Khi Dùng Partitioning</h3>



<p><strong>Câu hỏi:</strong> <em>Tôi đã phân vùng rồi mà query vẫn chậm như rùa. Tôi đã làm sai ở đâu?</em></p>



<p><strong>Trả lời:</strong> Rất có thể bạn đã mắc phải một trong những lỗi sau:</p>



<ul class="wp-block-list">
<li><strong>Chọn sai &#8220;Chìa Khóa&#8221; (Partition Key):</strong> Đây là sai lầm chết người nhất. Nếu các query của bạn không lọc theo cột mà bạn dùng để phân vùng (<code>partition key</code>), thì việc phân vùng hoàn toàn vô dụng. Hệ thống vẫn phải quét tất cả các &#8220;gian hàng&#8221;.</li>



<li><strong>&#8220;Tham Lam&#8221; Chia Quá Nhiều Phân Vùng:</strong> Chia nhỏ quá không tốt! Quá nhiều phân vùng sẽ làm tăng gánh nặng quản lý cho database, khiến việc lên kế hoạch truy vấn chậm đi. Vài chục đến vài trăm phân vùng thường là con số hợp lý.</li>



<li><strong>Dữ Liệu Phân Bổ Không Đều:</strong> Nếu 90% dữ liệu của bạn bị dồn vào chỉ một phân vùng, thì lợi ích gần như bằng không. Hãy phân tích dữ liệu trước khi chọn cột phân vùng.</li>



<li><strong>&#8220;Bỏ quên&#8221; Index:</strong> Partitioning và Indexing là &#8220;cặp bài trùng&#8221; chứ không phải kẻ thù. Phân vùng giúp giới hạn số lượng dữ liệu cần quét, còn index giúp tìm kiếm nhanh chóng bên trong phân vùng đó.</li>



<li><strong>Đừng chia quá nhỏ (Over-partitioning)</strong><br>Đừng chia mỗi ngày 1 partition nếu bạn có dữ liệu 10 năm (sẽ ra 3650 partitions). Khi partitions quá nhiều:
<ul class="wp-block-list">
<li>Hệ điều hành quá tải vì mở quá nhiều file.</li>



<li>Database tốn tài nguyên để quản lý metadata.</li>



<li>Query có thể chậm hơn cả không partition.</li>



<li><strong>Lời khuyên:</strong> Giữ số lượng partition ở mức hợp lý (dưới 100 thường là con số an toàn cho MySQL, Oracle thì có thể nhiều hơn).</li>
</ul>
</li>



<li><strong>Cẩn thận với Primary Key</strong>: Hầu hết các DB engine (như MySQL) yêu cầu cột dùng để Partition phải nằm trong Primary Key. Điều này có nghĩa là PK của bạn sẽ phải đổi từ <code>(id)</code> sang <code>(id, order_date)</code>. Dev team cần lưu ý chỗ này kẻo code logic bị sai.</li>
</ul>



<h2 id="ket-luan-partitioning-la-mot-tu-duy-khong-chi-la-cong-cu" class="wp-block-heading">Kết Luận: Partitioning Là Một Tư Duy, Không Chỉ Là Công Cụ</h2>



<p>SQL Partitioning không phải là viên đạn bạc cho mọi vấn đề. Nó là một công cụ quản lý dữ liệu cực kỳ mạnh mẽ ở quy mô lớn, với &#8220;tác dụng phụ&#8221; tuyệt vời là cải thiện hiệu suất.</p>



<p><strong>Lời khuyên cuối cùng:</strong> Đừng vội vàng phân vùng mọi bảng bạn có. Hãy luôn bắt đầu bằng việc tối ưu query và index. Chỉ khi bảng dữ liệu đã thực sự phình to (hàng trăm triệu dòng) và các phương pháp khác đã &#8220;bó tay&#8221;, đó mới là lúc bạn rút &#8220;thanh bảo kiếm&#8221; Partitioning ra.</p>



<p>Chúc bạn thành công trên con đường chinh phục dữ liệu!</p>



<p></p>
<p>The post <a href="https://blog.tomosia.com.vn/sql-partitioning-chia-de-tri-du-lieu-khong-lo/">SQL Partitioning: &#8220;Chia Để Trị&#8221; Dữ Liệu Khổng Lồ</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/sql-partitioning-chia-de-tri-du-lieu-khong-lo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<series:name><![CDATA[Web vulnerability]]></series:name>
	</item>
		<item>
		<title>Sử dụng trigger trong SQL Generrate mã code  kết hợp một String + id Auto Increament.</title>
		<link>https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/</link>
					<comments>https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/#comments</comments>
		
		<dc:creator><![CDATA[admin_tomosia]]></dc:creator>
		<pubDate>Tue, 19 Dec 2023 06:20:41 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[trigger]]></category>
		<category><![CDATA[Sql]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=2582</guid>

					<description><![CDATA[<p>Thông tin chi tiết về bài toán: Ở đây tôi có một bài toán từ khách hàng như&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/">Sử dụng trigger trong SQL Generrate mã code  kết hợp một String + id Auto Increament.</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 id="thong-tin-chi-tiet-ve-bai-toan" class="wp-block-heading"><strong>Thông tin chi tiết về bài toán:</strong></h2>



<p>Ở đây tôi có một bài toán từ khách hàng như sau: Hãy tạo cho tao một mã đơn hàng (<strong>trans_confirm_no</strong>) để tao có thể phân biệt được các đơn hàng với nhau với định dạng như này &#8220;<strong>TMSxxxxx</strong>&#8221; và nó sẽ phải bắt đầu từ &#8220;<strong><strong>TMS</strong>00001</strong>&#8220;. </p>



<p><br>Ngay khi nhận được yêu cầu thì tôi đã bắt tay ngay vào việc code và ngôn ngữ tôi sử dụng cho dự án này là Java spring boot và MSQL.</p>



<h3 id="cach-su-dung-code-de-generate-ma-trans_confirm_no" class="wp-block-heading">Cách sử dụng code để generate mã trans_confirm_no</h3>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.854167938232422px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Java</span><span role="button" tabindex="0" data-code="// hàm tạo ra mã trans_confirm_no mới tăng dần
private synchronized String getTransConfirmNoDiorTest(){
        String maxTransConfirmNo = transactionDiorMapper.getTransConfirmNo();
        log.info(&quot;maxTransConfirmNo: {}&quot;, maxTransConfirmNo);
        StringBuilder result = new StringBuilder();
        if (StringUtils.isBlank(maxTransConfirmNo)){
            logger.warn(&quot;Order transConfirmNo failed, transConfirmNo={}&quot;, maxTransConfirmNo);
            result.append(&quot;00001&quot;);
        } else {
            int maxTransConfirmNoIntValue = Integer.parseInt(maxTransConfirmNo.substring(3)) + 1;
            if (maxTransConfirmNoIntValue &gt; 0 &amp;&amp; maxTransConfirmNoIntValue &lt; 100000 ) {
                int len = 5 - ((Integer)maxTransConfirmNoIntValue).toString().length();
                if ( len &gt; 0 ) {
                    for (int i = 0; i &lt; len ; i++) {
                        result.append(&quot;0&quot;);
                    }
                    result.append(maxTransConfirmNoIntValue);
                } else {
                    result.append(maxTransConfirmNoIntValue);
                }
            } else {
                result.append(&quot;00001&quot;);
            }
        }
        log.info(&quot;result: {}&quot;, result);
        return &quot;TMS&quot; + result;
    }" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B">// hàm tạo ra mã trans_confirm_no mới tăng dần</span></span>
<span class="line"><span style="color: #F286C4">private</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">synchronized</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">String</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">getTransConfirmNoDiorTest</span><span style="color: #F6F6F4">(){</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">String</span><span style="color: #F6F6F4"> maxTransConfirmNo </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> transactionDiorMapper.</span><span style="color: #62E884">getTransConfirmNo</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">        log.</span><span style="color: #62E884">info</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">maxTransConfirmNo: {}</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, maxTransConfirmNo);</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">StringBuilder</span><span style="color: #F6F6F4"> result </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4; font-weight: bold">new</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">StringBuilder</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> (StringUtils.</span><span style="color: #62E884">isBlank</span><span style="color: #F6F6F4">(maxTransConfirmNo)){</span></span>
<span class="line"><span style="color: #F6F6F4">            logger.</span><span style="color: #62E884">warn</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Order transConfirmNo failed, transConfirmNo={}</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, maxTransConfirmNo);</span></span>
<span class="line"><span style="color: #F6F6F4">            result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">00001</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">        } </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #97E1F1; font-style: italic">int</span><span style="color: #F6F6F4"> maxTransConfirmNoIntValue </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> Integer.</span><span style="color: #62E884">parseInt</span><span style="color: #F6F6F4">(maxTransConfirmNo.</span><span style="color: #62E884">substring</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">3</span><span style="color: #F6F6F4">)) </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">;</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> (maxTransConfirmNoIntValue </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&amp;&amp;</span><span style="color: #F6F6F4"> maxTransConfirmNoIntValue </span><span style="color: #F286C4">&lt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">100000</span><span style="color: #F6F6F4"> ) {</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #97E1F1; font-style: italic">int</span><span style="color: #F6F6F4"> len </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">5</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> ((Integer)maxTransConfirmNoIntValue).</span><span style="color: #62E884">toString</span><span style="color: #F6F6F4">().</span><span style="color: #62E884">length</span><span style="color: #F6F6F4">();</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> ( len </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4"> ) {</span></span>
<span class="line"><span style="color: #F6F6F4">                    </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> (</span><span style="color: #97E1F1; font-style: italic">int</span><span style="color: #F6F6F4"> i </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">; i </span><span style="color: #F286C4">&lt;</span><span style="color: #F6F6F4"> len ; i</span><span style="color: #F286C4">++</span><span style="color: #F6F6F4">) {</span></span>
<span class="line"><span style="color: #F6F6F4">                        result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">0</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">                    }</span></span>
<span class="line"><span style="color: #F6F6F4">                    result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(maxTransConfirmNoIntValue);</span></span>
<span class="line"><span style="color: #F6F6F4">                } </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">                    result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(maxTransConfirmNoIntValue);</span></span>
<span class="line"><span style="color: #F6F6F4">                }</span></span>
<span class="line"><span style="color: #F6F6F4">            } </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">                result.</span><span style="color: #62E884">append</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">00001</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">            }</span></span>
<span class="line"><span style="color: #F6F6F4">        }</span></span>
<span class="line"><span style="color: #F6F6F4">        log.</span><span style="color: #62E884">info</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">result: {}</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, result);</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #F286C4">return</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">TMS</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> result;</span></span>
<span class="line"><span style="color: #F6F6F4">    }</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.854171752929688px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Java</span><span role="button" tabindex="0" data-code=" // hàm lấy ra mã trans_confirm_no lớn nhất đang có
 SELECT
            ttd.trans_confirm_no
        FROM
            t_transaction_dior ttd
        WHERE
            ttd.delete_flag = 0
            AND ttd.trans_confirm_no LIKE 'JPD%'
            AND ttd.trans_status IS NOT NULL
        ORDER BY ttd.trans_confirm_no DESC
        LIMIT 1;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4"> </span><span style="color: #7B7F8B">// hàm lấy ra mã trans_confirm_no lớn nhất đang có</span></span>
<span class="line"><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">SELECT</span></span>
<span class="line"><span style="color: #F6F6F4">            ttd.trans_confirm_no</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">FROM</span></span>
<span class="line"><span style="color: #F6F6F4">            t_transaction_dior ttd</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">WHERE</span></span>
<span class="line"><span style="color: #F6F6F4">            ttd.delete_flag </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #97E1F1; font-style: italic">AND</span><span style="color: #F6F6F4"> ttd.trans_confirm_no LIKE </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">JPD%</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #97E1F1; font-style: italic">AND</span><span style="color: #F6F6F4"> ttd.trans_status </span><span style="color: #97E1F1; font-style: italic">IS</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">NOT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">NULL</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #97E1F1; font-style: italic">ORDER</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">BY</span><span style="color: #F6F6F4"> ttd.trans_confirm_no </span><span style="color: #97E1F1; font-style: italic">DESC</span></span>
<span class="line"><span style="color: #F6F6F4">        LIMIT </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">;</span></span></code></pre></div>



<p>Vấn đề gặp phải ở đây là khi chúng tôi có nhiều đầu api call đến hàm này cùng thời điểm thì việc tạo ra một mã <strong><strong>TMS</strong>xxxxx</strong> tăng dần gặp vấn đề và nó Generate không đúng với mong muốn.</p>



<p>Khi hệ thống có lượng truy cập lớn, số lượng user mua hàng dồn dập, hàm bên trên sẽ xảy ra trường hợp sinh ra các mã <strong>trans_confirm_no</strong> trùng nhau.</p>



<h3 id="su-dung-trigger-generate-ma-trans_confirm_no" class="wp-block-heading">Sử dụng trigger generate mã trans_confirm_no</h3>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.854156494140625px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Java</span><span role="button" tabindex="0" data-code="// Đầu tiên chúng ta tạo ra 1 bảng để sử cơ chế AUTO_INCREMENT trong mysql để  lấy được phần xxxxx nằm trong fomat &quot;TMSxxxxx&quot;
CREATE TABLE transaction_seq
(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);

// Mình tạo ra 1 trigger sử dụng concat để nối prefix TMS + xxxxx đã được gen ở bảng transaction_seq phía trên.
DELIMITER $$
CREATE TRIGGER tg_t_transaction_dior_insert
    BEFORE INSERT ON t_transaction_dior
    FOR EACH ROW
BEGIN
    INSERT INTO transaction_seq VALUES (NULL);
    SET NEW.trans_confirm_no = CONCAT('TMS', LPAD(LAST_INSERT_ID(), 5, '0'));
END$$
    DELIMITER ;

// Đặt giá trị bắt đầu AUTO_INCREMENT trong table transaction_seq
ALTER TABLE transaction_seq AUTO_INCREMENT=00001;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B">// Đầu tiên chúng ta tạo ra 1 bảng để sử cơ chế AUTO_INCREMENT trong mysql để  lấy được phần xxxxx nằm trong fomat &quot;TMSxxxxx&quot;</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">CREATE</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">TABLE</span><span style="color: #F6F6F4"> transaction_seq</span></span>
<span class="line"><span style="color: #F6F6F4">(</span></span>
<span class="line"><span style="color: #F6F6F4">    id </span><span style="color: #97E1F1; font-style: italic">INT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">NOT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">NULL</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">AUTO_INCREMENT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">PRIMARY</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">KEY</span></span>
<span class="line"><span style="color: #F6F6F4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B">// Mình tạo ra 1 trigger sử dụng concat để nối prefix TMS + xxxxx đã được gen ở bảng transaction_seq phía trên.</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">DELIMITER</span><span style="color: #F6F6F4"> $$</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">CREATE</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">TRIGGER</span><span style="color: #F6F6F4"> tg_t_transaction_dior_insert</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1; font-style: italic">BEFORE</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">INSERT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">ON</span><span style="color: #F6F6F4"> t_transaction_dior</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1; font-style: italic">FOR</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">EACH</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">ROW</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">BEGIN</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1; font-style: italic">INSERT</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">INTO</span><span style="color: #F6F6F4"> transaction_seq </span><span style="color: #62E884">VALUES</span><span style="color: #F6F6F4"> (NULL);</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1; font-style: italic">SET</span><span style="color: #F6F6F4"> NEW.trans_confirm_no </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">CONCAT</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">TMS</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, </span><span style="color: #62E884">LPAD</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">LAST_INSERT_ID</span><span style="color: #F6F6F4">(), </span><span style="color: #BF9EEE">5</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">0</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">));</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">END</span><span style="color: #F6F6F4">$$</span></span>
<span class="line"><span style="color: #F6F6F4">    DELIMITER ;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B">// Đặt giá trị bắt đầu AUTO_INCREMENT trong table transaction_seq</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">ALTER</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">TABLE</span><span style="color: #F6F6F4"> transaction_seq AUTO_INCREMENT</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">00001</span><span style="color: #F6F6F4">;</span></span></code></pre></div>



<p>Khi sử dụng trigger đã giải quyết được vấn đề của tôi trong bài toán này.</p>
<p>The post <a href="https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/">Sử dụng trigger trong SQL Generrate mã code  kết hợp một String + id Auto Increament.</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/su-dung-trigger-trong-sql-generrate-ma-code-ket-hop-mot-string-id-auto-increament/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>MyISAM vs InnoDB</title>
		<link>https://blog.tomosia.com.vn/myisam-vs-innodb/</link>
					<comments>https://blog.tomosia.com.vn/myisam-vs-innodb/#comments</comments>
		
		<dc:creator><![CDATA[admin_tomosia]]></dc:creator>
		<pubDate>Fri, 01 Dec 2023 04:16:25 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MyISAM]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[Sql]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=2181</guid>

					<description><![CDATA[<p>Mọi khía cạnh kỹ thuật đều quyết định sự thành công của một dự án. Với nhu cầu&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/myisam-vs-innodb/">MyISAM vs InnoDB</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Mọi khía cạnh kỹ thuật đều quyết định sự thành công của một dự án. Với nhu cầu lưu trữ dữ liệu ngày càng tăng, việc lựa chọn cơ sở dữ liệu có thể kiểm tra thành công tất cả các yêu cầu lưu trữ của bạn về lâu dài là điều vô cùng quan trọng.</p>



<p>Trong blog này, chúng ta sẽ thảo luận về hai engine phổ biến nhất của cơ sở dữ liệu MySQL: <strong>InnoDB</strong> và <strong>MyISAM</strong>. Chúng ta sẽ thảo luận về chúng là gì và hiểu <strong>MyISAM</strong> so với <strong>InnoDB</strong> bằng cách so sánh chúng với các yếu tố quan trọng.</p>



<h2 id="mysql-la-gi" class="wp-block-heading">MySQL là gì?</h2>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1024" height="530" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/12/1024px-MySQL.ff87215b43fd7292af172e2a5d9b844217262571.png" alt="" class="wp-image-2195" style="width:680px;height:auto" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/12/1024px-MySQL.ff87215b43fd7292af172e2a5d9b844217262571.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/1024px-MySQL.ff87215b43fd7292af172e2a5d9b844217262571-300x155.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/1024px-MySQL.ff87215b43fd7292af172e2a5d9b844217262571-768x398.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/1024px-MySQL.ff87215b43fd7292af172e2a5d9b844217262571-380x197.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/1024px-MySQL.ff87215b43fd7292af172e2a5d9b844217262571-800x414.png 800w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 id="khai-niem" class="wp-block-heading">Khái niệm</h3>



<p>Chắc mọi người cũng không còn xa lạ gì với hệ quản trị cơ sở dữ liệu này. MySQL là một open-source <strong>RDBMS</strong> viết tắt của <em><strong>Relational Database Management Systems</strong></em> (Hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở). MySQL được sử dụng cho nhiều ứng dụng khác nhau và được xây dựng dựa trên SQL (Ngôn ngữ truy vấn có cấu trúc).</p>



<h3 id="tinh-nang-chinh-cua-mysql" class="wp-block-heading">Tính năng chính của MySQL</h3>



<ul class="wp-block-list">
<li>Dễ sử dụng: Là mã nguồn mở và có rất nhiều bài viết hướng dẫn cài đặt.</li>



<li>Khả năng mở rộng: MySQL có kiến trúc có thể mở rộng và cung cấp các tiện ích tải nhanh hiệu suất cao với các bộ nhớ đệm khác nhau.</li>



<li>Khả năng tương thích: MySQL tương thích và có thể được cài đặt trên tất cả các nền tảng hiện đại như Windows, Linux, Unix, MacOS, v.v.</li>



<li>Bảo mật dữ liệu: MySQL có tất cả các tính năng cung cấp bảo mật cho cơ sở dữ liệu và chỉ cho phép người dùng được ủy quyền truy cập chúng.</li>



<li>Chi phí thấp: Sử dụng miễn phí. Bất cứ ai đều có thể tải xuống MySQL để sử dụng một cách miễn phí.</li>
</ul>



<h2 id="myisam-la-gi" class="wp-block-heading">MyISAM là gì?</h2>



<p><strong>MyISAM</strong> là tên viết tắt của <strong>My Indexed Sequential Access Method</strong>. <strong>MyISAM</strong> là storage system mặc định và thường được sử dụng trong Web, Data warehousing và các môi trường phân tích khác. <strong>MyISAM</strong> Engine hỗ trợ tất cả các cấu hình MySQL.</p>



<p>Trước đây, <strong>MyISAM</strong> được coi là sự lựa chọn tốt hơn, nhanh chóng và tối ưu tốt cho các thao tác đọc nặng. <strong>MyISAM</strong> là storage engine mặc định cho đến tháng 12 năm 2009; sau đó, <strong>InnoDB</strong> đã thay thế. Tuy nhiên, <strong>MyISAM</strong> cung cấp nhiều tiện ích mở rộng hữu ích cho các nhà phát triển MySQL.</p>



<h2 id="innodb-la-gi" class="wp-block-heading">InnoDB là gì?</h2>



<p><strong>InnoDB</strong> là storage engine an toàn giao dịch (tuân thủ ACID) dành cho MySQL với các tính năng như Commit, Rollback và khả năng khôi phục sự cố để bảo vệ dữ liệu người dùng và cung cấp khả năng chịu lỗi.</p>



<p>Khi một transaction hoàn tất, dữ liệu sẽ được ghi vào cơ sở dữ liệu theo transaction đó. Điều quan trọng cần lưu ý là những thay đổi không đầy đủ sẽ không được lưu trữ trong cơ sở dữ liệu.</p>



<p><strong>InnoDB</strong> sử dụng row-level locking và tính năng không khóa nhất quán theo kiểu Oracle khi đọc giúp tăng hiệu suất và khả năng đồng thời của nhiều người dùng.</p>



<h2 id="myisam-vs-innodb" class="wp-block-heading"><strong>MyISAM vs InnoDB</strong></h2>



<p>Nhìn chung, <strong>MyISAM</strong> là cũ hơn và kém hiệu quả hơn <strong>InnoDB</strong>. Sự khác biệt thường được ghi nhận nhất giữa hai engine này như sau: <strong>InnoDB</strong> ổn định hơn, nhanh hơn và dễ cài đặt hơn; nó cũng hỗ trợ các giao dịch. Đây là storage engine mặc định và bạn có thể sử dụng các tính năng của <strong>InnoDB</strong> mà không cần phải lo lắng về các vấn đề tương thích. Nếu bạn cần lưu trữ lượng lớn dữ liệu hoặc đảm bảo rằng các giao dịch sẽ hoạt động chính xác, hãy chọn <strong>InnoDB</strong>.</p>



<p><strong>MyISAM</strong> không tốt lắm trong việc lưu trữ lượng lớn dữ liệu vì nó lưu trữ mọi thứ trong một bảng duy nhất. Khi cần thêm dữ liệu vào cơ sở dữ liệu, bạn phải khóa toàn bộ bảng, điều này có thể khiến cơ sở dữ liệu của bạn ngừng hoạt động cho đến khi được mở khóa. Còn với <strong>InnoDB</strong>, mỗi hàng được lưu trữ riêng trong một bảng riêng. Điều này có nghĩa là khi chèn dữ liệu vào cơ sở dữ liệu MySQL, bạn không cần phải khóa tất cả các hàng.</p>



<p>Bây giờ chúng ta hãy chuyển sang phần tổng quan chi tiết hơn về các công cụ lưu trữ này.</p>



<h3 id="1-engine-type" class="wp-block-heading">1. <strong>Engine Type</strong></h3>



<p><strong>MyISAM</strong> là loại lưu trữ phi giao dịch và mọi tùy chọn ghi đều cần được khôi phục theo cách thủ công (nếu cần).</p>



<p><strong>InnoDB</strong> là loại lưu trữ giao dịch tự động khôi phục quá trình ghi nếu chúng chưa được hoàn thành.</p>



<h3 id="2-locking" class="wp-block-heading">2. <strong>Locking</strong></h3>



<p><strong>Locking</strong> là cơ chế trong MySQL ngăn hai người dùng sửa đổi các hàng trùng lặp cùng lúc bằng cách khóa hàng. Người dùng không thể thay đổi bảng khi khóa được bật.</p>



<p><strong>MyISAM</strong> sử dụng phương pháp khóa bảng mặc định và cho phép một phiên sửa đổi bảng. Điều này có nghĩa là tại một thời điểm chỉ có một người dùng có thể thay đổi bảng. Nếu người dùng khác cố gắng thay đổi bảng, họ sẽ nhận được thông báo rằng nó đã bị khóa. Phương pháp khóa bảng rất hữu ích cho cơ sở dữ liệu chỉ đọc vì nó không yêu cầu nhiều bộ nhớ.</p>



<p><strong>InnoDB</strong> sử dụng khóa cấp hàng của bảng. Phương pháp này hỗ trợ nhiều phiên trên cùng một hàng bằng cách chỉ khóa các hàng trong quá trình sửa đổi. Khóa hàng rất hữu ích cho cơ sở dữ liệu có nhiều người dùng.</p>



<p>Nhược điểm duy nhất của khóa cấp hàng là nó tiêu tốn nhiều bộ nhớ và việc truy vấn cũng như sửa đổi dữ liệu mất nhiều thời gian.</p>



<h3 id="3-foreign-keys" class="wp-block-heading"><strong>3. Foreign Keys</strong></h3>



<p>Khóa ngoại (Foreign Keys) là một cột trong một bảng liên kết dữ liệu với bảng khác. Nó ngăn người dùng thêm các bản ghi phá hủy liên kết giữa hai bảng.</p>



<p><strong>MyISAM</strong> không hỗ trợ tùy chọn Khóa ngoại.</p>



<p><strong>InnoDB</strong> hỗ trợ tùy chọn Khóa ngoại.</p>



<h3 id="4-acid-properties" class="wp-block-heading">4. <strong>ACID Properties</strong></h3>



<p>ACID là viết tắt của <strong>Atomicity</strong>, <strong>Consistency</strong>, <strong>Isolation</strong>, và <strong>Durability</strong>. <strong>MyISAM</strong> không hỗ trợ thuộc tính ACID trong khi <strong>InnoDB</strong> hỗ trợ thuộc tính ACID.</p>



<h3 id="5-performance" class="wp-block-heading">5. <strong>Performance</strong></h3>



<p><strong>InnoDB</strong> hỗ trợ các thuộc tính transaction, tức là rollback và commit, đồng thời có tốc độ ghi cao hơn. Hiệu suất của <strong>InnoDB</strong> đối với khối lượng dữ liệu lớn tốt hơn so với <strong>MyISAM</strong>.</p>



<p><strong>MyISAM</strong> không hỗ trợ các thuộc tính transaction và đọc nhanh hơn. So với <strong>InnoDB</strong>, hiệu suất xử lý khối lượng dữ liệu lớn sẽ kém hơn.</p>



<h3 id="6-reliability" class="wp-block-heading">6. <strong>Reliability</strong></h3>



<p><strong>InnoDB</strong> sử dụng nhật ký giao dịch để ghi lại mọi hoạt động và do đó cung cấp các hoạt động đáng tin cậy. Vì vậy, trong trường hợp xảy ra lỗi, dữ liệu có thể được phục hồi nhanh chóng bằng cách sử dụng các nhật ký đó.</p>



<p><strong>MyISAM</strong> không cung cấp tính toàn vẹn dữ liệu; lỗi phần cứng và các thao tác bị hủy có thể khiến dữ liệu bị hỏng.</p>



<h3 id="7-caching-and-indexing" class="wp-block-heading">7. <strong>Caching and Indexing</strong></h3>



<p><strong>InnoDB</strong> hỗ trợ một lượng lớn bộ đệm lưu trữ cả dữ liệu và chỉ mục index. Tuy nhiên, không có hỗ trợ cho Full-text search.</p>



<p>Bộ đệm khóa <strong>MyISAM</strong> chỉ dành cho các chỉ mục index và Full-text search được hỗ trợ trong <strong>MyISAM</strong>.</p>



<h2 id="conclusion" class="wp-block-heading">Conclusion</h2>



<p>Bài viết này liệt kê những điểm khác biệt quan trọng giữa 2 loại engine <strong>InnoDB</strong> và <strong>MyISAM</strong>. Hy vọng mọi người sẽ hiểu và nắm được những điểm trên để có thể sử dụng hợp lý 2 loại engine này.</p>



<p>Cảm ơn mọi người đã dành thời gian để đọc 🙏</p>
<p>The post <a href="https://blog.tomosia.com.vn/myisam-vs-innodb/">MyISAM vs InnoDB</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/myisam-vs-innodb/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Trình tự thực thi SQL</title>
		<link>https://blog.tomosia.com.vn/trinh-tu-thuc-thi-sql/</link>
					<comments>https://blog.tomosia.com.vn/trinh-tu-thuc-thi-sql/#comments</comments>
		
		<dc:creator><![CDATA[Thuan Nguyen Van]]></dc:creator>
		<pubDate>Mon, 20 Nov 2023 06:24:52 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Sql]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=1917</guid>

					<description><![CDATA[<p>Việc truy vấn SQL là công việc mà hầu như mọi lập trình viên Backend chúng ta đều&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/trinh-tu-thuc-thi-sql/">Trình tự thực thi SQL</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Việc truy vấn SQL là công việc mà hầu như mọi lập trình viên Backend chúng ta đều tiếp xúc hằng ngày. Trong một câu truy vấn SQL bao gồm nhiều mệnh đề như SELECT, FROM, WHERE, GROUPBY, HAVING, and ORDERBY. Trong bài viết này chúng ta cùng tìm hiểu về thứ tự của một câu truy vấn SQL. </p>



<figure class="wp-block-image size-full"><img decoding="async" width="800" height="861" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/image-22.png" alt="" class="wp-image-1918" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/image-22.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/image-22-279x300.png 279w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/image-22-768x827.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/image-22-380x409.png 380w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p></p>



<p>Theo hình ở trên, thứ tự truy vấn được thực hiện theo thứ tự:</p>



<figure class="wp-block-table"><table><tbody><tr><td class="has-text-align-left" data-align="left"><strong>Clause&nbsp;</strong></td><td><strong>Function</strong></td></tr><tr><td class="has-text-align-left" data-align="left"><strong>FROM /&nbsp;<a href="https://www.shiksha.com/online-courses/articles/sql-joins/" target="_blank" rel="noreferrer noopener">JOIN</a></strong></td><td>Khi bạn viết bất kỳ truy vấn nào, SQL sẽ bắt đầu bằng cách xác định các bảng để truy xuất dữ liệu và cách chúng được kết nối.</td></tr><tr><td class="has-text-align-left" data-align="left"><strong><a href="https://www.shiksha.com/online-courses/articles/how-to-use-where-clause-in-sql/" target="_blank" rel="noreferrer noopener">WHERE</a></strong></td><td>Nó hoạt động như một filters; nó lọc bản ghi dựa trên các điều kiện do người dùng chỉ định.</td></tr><tr><td class="has-text-align-left" data-align="left"><strong><a href="https://www.shiksha.com/online-courses/articles/how-to-use-group-by-in-sql/" target="_blank" rel="noreferrer noopener">GROUP BY</a></strong></td><td>Dữ liệu đã lọc được nhóm lại dựa trên điều kiện đã chỉ định.</td></tr><tr><td class="has-text-align-left" data-align="left"><strong><a href="https://www.shiksha.com/online-courses/articles/how-to-use-having-clause-in-sql/" target="_blank" rel="noreferrer noopener">HAVING</a></strong></td><td>Nó tương tự như mệnh đề WHERE nhưng được áp dụng sau khi nhóm dữ liệu.</td></tr><tr><td class="has-text-align-left" data-align="left"><strong><a href="https://www.shiksha.com/online-courses/articles/select-statement-in-sql/" target="_blank" rel="noreferrer noopener">SELECT</a></strong></td><td>Mệnh đề chọn các cột để đưa vào kết quả cuối cùng.</td></tr><tr><td class="has-text-align-left" data-align="left"><strong><a href="https://www.shiksha.com/online-courses/articles/how-to-use-distinct-in-sql/" target="_blank" rel="noreferrer noopener">DISTINCT</a></strong></td><td>Loại bỏ các hàng trùng lặp khỏi kết quả. Khi bạn áp dụng điều khoản này, bạn chỉ còn lại các bản ghi riêng biệt.</td></tr><tr><td class="has-text-align-left" data-align="left"><strong><a href="https://www.shiksha.com/online-courses/articles/how-to-use-order-by-clause-in-sql/" target="_blank" rel="noreferrer noopener">ORDER BY</a></strong></td><td>Nó sắp xếp (tăng/giảm/A-&gt;Z/Z-&gt;A) kết quả dựa trên điều kiện đã chỉ định.</td></tr><tr><td class="has-text-align-left" data-align="left"><strong><a href="https://www.shiksha.com/online-courses/articles/how-to-use-limit-clause-in-sql/" target="_blank" rel="noreferrer noopener">LIMIT</a>&nbsp;/ OFFSET</strong></td><td>Nó xác định số lượng bản ghi cần trả về và bắt đầu từ đâu.</td></tr></tbody></table></figure>



<p>Tham khảo: <a href="https://www.linkedin.com/posts/nikkisiapno_want-to-know-the-secret-to-optimizing-your-activity-7122893424134934529-Y9U7?utm_source=share&amp;utm_medium=member_desktop">https://www.linkedin.com/posts/nikkisiapno_want-to-know-the-secret-to-optimizing-your-activity-7122893424134934529-Y9U7?utm_source=share&amp;utm_medium=member_desktop</a></p>
<p>The post <a href="https://blog.tomosia.com.vn/trinh-tu-thuc-thi-sql/">Trình tự thực thi SQL</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/trinh-tu-thuc-thi-sql/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Cài đặt MySQL trên Amazon Linux</title>
		<link>https://blog.tomosia.com.vn/cai-dat-mysql-tren-amazon-linux/</link>
					<comments>https://blog.tomosia.com.vn/cai-dat-mysql-tren-amazon-linux/#comments</comments>
		
		<dc:creator><![CDATA[Anh Le]]></dc:creator>
		<pubDate>Wed, 15 Nov 2023 18:46:52 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=1901</guid>

					<description><![CDATA[<p>Giới thiệu Đối với các website không yêu cầu nhiều về quản lý CSDL như blog, các dự&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/cai-dat-mysql-tren-amazon-linux/">Cài đặt MySQL trên Amazon Linux</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h5 id="gioi-thieu" class="wp-block-heading">Giới thiệu</h5>



<p>Đối với các website không yêu cầu nhiều về quản lý CSDL như blog, các dự án cần build môi trường Dev, Staging,&#8230; thì bạn có thể giản thiểu chi phí cho việc quản lý CSDL bằng cách cài đặt trực tiếp MySQL lên EC2.</p>



<h5 id="cac-buoc-thuc-hien" class="wp-block-heading">Các bước thực hiện</h5>



<p>Step1: Thêm Mysql repository.</p>



<p>Trước tiên, chúng ta cần thêm kho lưu trữ MySQL Yum vào danh sách kho lưu trữ của máy chủ Amazon Linux 2023. Thao tác này chỉ được thực hiện một lần và cung cấp tất cả các kho phiên bản gói MySQL.</p>



<p>Sử dụng wget để tải về repository bằng command.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="/* For MySQL 5.7 */
sudo wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

/* For MySQL 8 */
sudo wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm " style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">/*</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">For</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MySQL</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">5.7</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE; font-style: italic">*</span><span style="color: #E7EE98">/</span></span>
<span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">wget</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">/*</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">For</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MySQL</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">8</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE; font-style: italic">*</span><span style="color: #E7EE98">/</span></span>
<span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">wget</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm</span><span style="color: #F6F6F4"> </span></span></code></pre></div>



<p>Nhập y để confirm tải package.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="Dependencies Resolved

======================================================================================================================================================================================================
 Package                                               Arch                               Version                           Repository                                                           Size
======================================================================================================================================================================================================
Installing:
 mysql80-community-release                             noarch                             el7-5                             /mysql80-community-release-el7-5.noarch                             9.1 k

Transaction Summary
======================================================================================================================================================================================================
Install  1 Package

Total size: 9.1 k
Installed size: 9.1 k
Is this ok [y/d/N]: y" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">Dependencies</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Resolved</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">======================================================================================================================================================================================================</span></span>
<span class="line"><span style="color: #F6F6F4"> </span><span style="color: #62E884">Package</span><span style="color: #F6F6F4">                                               </span><span style="color: #E7EE98">Arch</span><span style="color: #F6F6F4">                               </span><span style="color: #E7EE98">Version</span><span style="color: #F6F6F4">                           </span><span style="color: #E7EE98">Repository</span><span style="color: #F6F6F4">                                                           </span><span style="color: #E7EE98">Size</span></span>
<span class="line"><span style="color: #F6F6F4">======================================================================================================================================================================================================</span></span>
<span class="line"><span style="color: #62E884">Installing:</span></span>
<span class="line"><span style="color: #F6F6F4"> </span><span style="color: #62E884">mysql80-community-release</span><span style="color: #F6F6F4">                             </span><span style="color: #E7EE98">noarch</span><span style="color: #F6F6F4">                             </span><span style="color: #E7EE98">el7-5</span><span style="color: #F6F6F4">                             </span><span style="color: #E7EE98">/mysql80-community-release-el7-5.noarch</span><span style="color: #F6F6F4">                             </span><span style="color: #BF9EEE">9.1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">k</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Transaction</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Summary</span></span>
<span class="line"><span style="color: #F6F6F4">======================================================================================================================================================================================================</span></span>
<span class="line"><span style="color: #62E884">Install</span><span style="color: #F6F6F4">  </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Package</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Total</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">size:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">9.1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">k</span></span>
<span class="line"><span style="color: #62E884">Installed</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">size:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">9.1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">k</span></span>
<span class="line"><span style="color: #62E884">Is</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">this</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ok</span><span style="color: #F6F6F4"> [y/d/N]: y</span></span></code></pre></div>



<p>Kiểm tra repository đã tải thành công chưa với câu lệnh.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="sudo ls -lrt" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ls</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-lrt</span></span></code></pre></div>



<p>Output:</p>



<p><em>[ec2-user@ip-172-31-32-xxx ~]$ sudo ls -lrt<br>total 12<br>-rw-r&#8211;r&#8211;. 1 root root 10534 Jul 25 2022 mysql80-community-release-el9-1.noarch.rpm</em></p>



<p>Step 2: Cài đặt MySQL.</p>



<p>For MySQL 5.7</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="/* For MySQL 5.7 */
sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">/*</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">For</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MySQL</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">5.7</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE; font-style: italic">*</span><span style="color: #E7EE98">/</span></span>
<span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">yum</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localinstall</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysql57-community-release-el7-11.noarch.rpm</span></span></code></pre></div>



<p>Ở bước này nếu bạn gặp lỗi tương tự như bên dưới thì tiếp tục chạy 2 lệnh tiếp theo để fix nhé.</p>



<p><strong>Failing package is: mysql-community-client-5.7.39-1.el7.x86_64<br>GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

sudo yum -y install mysql-community-server" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">rpm</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--import</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">https://repo.mysql.com/RPM-GPG-KEY-mysql-2022</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">yum</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-y</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">install</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysql-community-server</span></span></code></pre></div>



<p>For MySQL 8.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="sudo dnf install mysql80-community-release-el9-1.noarch.rpm
dnf repolist enabled | grep &quot;mysql.*-community.*&quot;
sudo dnf install mysql-community-server" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">dnf</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">install</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysql80-community-release-el9-1.noarch.rpm</span></span>
<span class="line"><span style="color: #62E884">dnf</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">repolist</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">enabled</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">|</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">grep</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">mysql.*-community.*</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">dnf</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">install</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysql-community-server</span></span></code></pre></div>



<p>Step 3: Sau khi hoàn tất các câu lệnh cài đặt, ta thực hiện start MySQL.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="sudo systemctl start mysqld.service" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">systemctl</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">start</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysqld.service</span></span></code></pre></div>



<p>Step 4: Kiểm tra trạng thái của Mysql hiện tại.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="sudo systemctl status mysqld.service" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">systemctl</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">status</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysqld.service</span></span></code></pre></div>



<p>Nếu thành công bạn sẽ thấy thông báo MySQL đã running <em>Active: active (running)</em> như bên dưới.</p>



<p>Dec 01 19:02:20 centos-512mb-sfo2-02 systemd[1]: Started MySQL Server.</p>



<h5 id="thiet-lap-cau-hinh-cho-mysql" class="wp-block-heading">Thiết lập cấu hình cho Mysql</h5>



<p>Đổi mật khẩu cho người dùng root<br>Như bạn đã biết, từ Mysql 8.0 thì việc sử dụng đăng nhập không dùng mật khẩu với người dùng root đã bị loại bỏ. Vậy để tìm mật khẩu cho người dùng root khi đăng nhập lần đầu ta sẽ tìm trong file log của mysql. Mật khẩu tạm thời được tìm thấy khi thực hiện câu lệnh:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="sudo grep 'temporary password' /var/log/mysqld.log" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">grep</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">temporary password</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/var/log/mysqld.log</span></span></code></pre></div>



[ec2-user@ip-172-31-32-xxx ~]$ sudo grep &#8216;temporary password&#8217; /var/log/mysqld.log<br>2023-07-28T09:06:43.641665Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: D6%=yjkDGnp8</p>



<p>Tiếp theo ta thực hiện đăng nhập vào MySQL và nhập password tạm thời của người dùng root trong câu lệnh bên dưới: (Mật khẩu root: D6%=yjkDGnp8)</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="sudo mysql_secure_installation -p" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">sudo</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysql_secure_installation</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-p</span></span></code></pre></div>



<p>Nhập mật khẩu mới cho người dùng root và nhập y cuối mỗi câu để loại bỏ các user test.</p>



<p>Lưu ý khi đặt mật khẩu cần tuân theo quy tắt sau:<br>+ Chứa ít nhất 1 ký tự in hoa<br>+ Chứa ít nhất 1 ký tự thường<br>+ Chứa ít nhất 1 số<br>+ Chứa ít nhất 1 ký tự đặc biệt<br>+ Tổng số ký tự phải lớn hơn 8</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="Securing the MySQL server deployment.


The existing password for the user account root has expired. Please set a new password.

New password: &lt;MẬT KHẨU MỚI&gt;

Re-enter new password: &lt;NHẬP LẠI MẬT KHẨU&gt;
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) :

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">Securing</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MySQL</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">server</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">deployment.</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">The</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">existing</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">password</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">user</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">account</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">root</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">has</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">expired.</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Please</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">set</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">a</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">new</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">password.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">New</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">password:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">MẬT</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">KHẨU</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MỚ</span><span style="color: #F6F6F4">I</span><span style="color: #F286C4">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Re-enter</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">new</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">password:</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">NHẬP</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">LẠI</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MẬT</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">KHẨ</span><span style="color: #F6F6F4">U</span><span style="color: #F286C4">&gt;</span></span>
<span class="line"><span style="color: #62E884">The</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">validate_password</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">component</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">is</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">installed</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">on</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">server.</span></span>
<span class="line"><span style="color: #62E884">The</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">subsequent</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">steps</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">will</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">run</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">with</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">existing</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">configuration</span></span>
<span class="line"><span style="color: #62E884">of</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">component.</span></span>
<span class="line"><span style="color: #62E884">Using</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">existing</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">password</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">root.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Estimated</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">strength</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">of</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">password:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">100</span></span>
<span class="line"><span style="color: #62E884">Change</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">password</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">root</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">?</span><span style="color: #F6F6F4"> ((Press </span><span style="color: #E7EE98">y</span><span style="color: #F286C4">|</span><span style="color: #62E884">Y</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Yes,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">any</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">other</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">key</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">No</span><span style="color: #F6F6F4">) </span><span style="color: #97E1F1">:</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">...</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">skipping.</span></span>
<span class="line"><span style="color: #62E884">By</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">default,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">a</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MySQL</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">installation</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">has</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">an</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">anonymous</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">user,</span></span>
<span class="line"><span style="color: #62E884">allowing</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">anyone</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">to</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">log</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">into</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MySQL</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">without</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">having</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">to</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">have</span></span>
<span class="line"><span style="color: #62E884">a</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">user</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">account</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">created</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">them.</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">This</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">is</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">intended</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">only</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span></span>
<span class="line"><span style="color: #62E884">testing,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">and</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">to</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">make</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">installation</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">go</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">a</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">bit</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">smoother.</span></span>
<span class="line"><span style="color: #62E884">You</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">should</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">remove</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">them</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">before</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">moving</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">into</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">a</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">production</span></span>
<span class="line"><span style="color: #62E884">environment.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Remove</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">anonymous</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">users?</span><span style="color: #F6F6F4"> (Press </span><span style="color: #E7EE98">y</span><span style="color: #F286C4">|</span><span style="color: #62E884">Y</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Yes,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">any</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">other</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">key</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">No</span><span style="color: #F6F6F4">) </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> y</span></span>
<span class="line"><span style="color: #62E884">Success.</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Normally,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">root</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">should</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">only</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">be</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">allowed</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">to</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">connect</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">from</span></span>
<span class="line"><span style="color: #62E884">&#39;localhost&#39;</span><span style="color: #97E1F1">.</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">This</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ensures</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">that</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">someone</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">cannot</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">guess</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">at</span></span>
<span class="line"><span style="color: #62E884">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">root</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">password</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">from</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">network.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Disallow</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">root</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">login</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">remotely?</span><span style="color: #F6F6F4"> (Press </span><span style="color: #E7EE98">y</span><span style="color: #F286C4">|</span><span style="color: #62E884">Y</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Yes,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">any</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">other</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">key</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">No</span><span style="color: #F6F6F4">) </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> y</span></span>
<span class="line"><span style="color: #62E884">Success.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">By</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">default,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MySQL</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">comes</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">with</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">a</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">database</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">named</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">test</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">that</span></span>
<span class="line"><span style="color: #62E884">anyone</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">can</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">access.</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">This</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">is</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">also</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">intended</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">only</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">testing,</span></span>
<span class="line"><span style="color: #62E884">and</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">should</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">be</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">removed</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">before</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">moving</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">into</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">a</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">production</span></span>
<span class="line"><span style="color: #62E884">environment.</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Remove</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">test</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">database</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">and</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">access</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">to</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">it?</span><span style="color: #F6F6F4"> (Press </span><span style="color: #E7EE98">y</span><span style="color: #F286C4">|</span><span style="color: #62E884">Y</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Yes,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">any</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">other</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">key</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">No</span><span style="color: #F6F6F4">) </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> y</span></span>
<span class="line"><span style="color: #F6F6F4"> </span><span style="color: #62E884">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Dropping</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">test</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">database...</span></span>
<span class="line"><span style="color: #62E884">Success.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4"> </span><span style="color: #62E884">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Removing</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">privileges</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">on</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">test</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">database...</span></span>
<span class="line"><span style="color: #62E884">Success.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Reloading</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">the</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">privilege</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">tables</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">will</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ensure</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">that</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">all</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">changes</span></span>
<span class="line"><span style="color: #62E884">made</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">so</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">far</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">will</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">take</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">effect</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">immediately.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">Reload</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">privilege</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">tables</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">now?</span><span style="color: #F6F6F4"> (Press </span><span style="color: #E7EE98">y</span><span style="color: #F286C4">|</span><span style="color: #62E884">Y</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Yes,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">any</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">other</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">key</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">for</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">No</span><span style="color: #F6F6F4">) </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> y</span></span>
<span class="line"><span style="color: #62E884">Success.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">All</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">done!</span></span></code></pre></div>



<p>Sau khi hoàn tất bước đổi mật khẩu ở trên, chúng ta có thể thực hiện đăng nhập lại với mật khẩu vừa đổi.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="mysql -uroot -pPass_xxxxx" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">mysql</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-uroot</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-pPass_xxxxx</span></span></code></pre></div>



<h5 id="tao-db-va-nguoi-dung-cho-db-cua-ung-dung-web" class="wp-block-heading">Tạo DB và người dùng cho DB của ứng dụng web</h5>



<p>Để tạo một database mới.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="create database db_new;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">create</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">database</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">db_new</span><span style="color: #F6F6F4">;</span></span></code></pre></div>



<p>Bước tiếp theo chúng ta sẽ thực hiện tạo một user cho ứng dụng web.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="CREATE USER 'user_db'@'localhost' IDENTIFIED BY 'Pass_xxxxx';" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">CREATE</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">USER</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">user_db</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">@</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">localhost</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">IDENTIFIED</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">BY</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Pass_xxxxx</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">;</span></span></code></pre></div>



<p>Thêm full quyền quản lý DB cho user vừa tạo ở trên</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="GRANT ALL PRIVILEGES ON db_new.* TO 'user_db'@'localhost';
FLUSH PRIVILEGES;
exit;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">GRANT</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ALL</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">PRIVILEGES</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ON</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">db_new.</span><span style="color: #BF9EEE; font-style: italic">*</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">TO</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">user_db</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">@</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">localhost</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">;</span></span>
<span class="line"><span style="color: #62E884">FLUSH</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">PRIVILEGES</span><span style="color: #F6F6F4">;</span></span>
<span class="line"><span style="color: #97E1F1">exit</span><span style="color: #F6F6F4">;</span></span></code></pre></div>



<p>Để kiểm tra bước tạo ở trên đã chuẩn chưa thì chúng ta thực hiện đăng nhập lại với user và password vừa tạo:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="mysql -uuser_db -ppass_xxxx" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">mysql</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-uuser_db</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-ppass_xxxx</span></span></code></pre></div>



<p>Kiểm tra trạng thái của MySQL.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: d&gt;
Active: active (running) since Mon 2023-07-31 10:10:56 UTC; 2 weeks 2 days&gt;
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Main PID: 250921 (mysqld)
Status: &quot;Server is operational&quot;
Tasks: 46 (limit: 2322)
Memory: 575.6M
CPU: 2h 19min 306ms
CGroup: /system.slice/mysqld.service
└─250921 /usr/sbin/mysqld" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">Redirecting</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">to</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/bin/systemctl</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">status</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysqld.service</span></span>
<span class="line"><span style="color: #62E884">●</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mysqld.service</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">MySQL</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Server</span></span>
<span class="line"><span style="color: #62E884">Loaded:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">loaded</span><span style="color: #F6F6F4"> (/usr/lib/systemd/system/mysqld.service; </span><span style="color: #62E884">enabled</span><span style="color: #F6F6F4">; </span><span style="color: #62E884">preset:</span><span style="color: #F6F6F4"> d</span><span style="color: #F286C4">&gt;</span></span>
<span class="line"><span style="color: #62E884">Active:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">active</span><span style="color: #F6F6F4"> (running) since Mon 2023-07-31 10:10:56 UTC; </span><span style="color: #62E884">2</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">weeks</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">day</span><span style="color: #F6F6F4">s</span><span style="color: #F286C4">&gt;</span></span>
<span class="line"><span style="color: #62E884">Docs:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">man:mysqld</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">8</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #62E884">http://dev.mysql.com/doc/refman/en/using-systemd.html</span></span>
<span class="line"><span style="color: #62E884">Main</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">PID:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">250921</span><span style="color: #F6F6F4"> (mysqld)</span></span>
<span class="line"><span style="color: #62E884">Status:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Server is operational</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #62E884">Tasks:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">46</span><span style="color: #F6F6F4"> (limit: </span><span style="color: #BF9EEE">2322</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #62E884">Memory:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">575.6</span><span style="color: #E7EE98">M</span></span>
<span class="line"><span style="color: #62E884">CPU:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">h</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">19</span><span style="color: #E7EE98">min</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">306</span><span style="color: #E7EE98">ms</span></span>
<span class="line"><span style="color: #62E884">CGroup:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/system.slice/mysqld.service</span></span>
<span class="line"><span style="color: #62E884">└─250921</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/usr/sbin/mysqld</span></span></code></pre></div>



<p>Đến bước này là chúng ta đã hoàn thành việc cài đặt Mysql server trên Amazon Linux 2023. Ngoài ra để thực hiện import sql có sẵn vào DB vừa tạo thì chúng ta có thể cài đặt PhpMyadmin hoặc sử dụng command import của mysql.</p>



<h5 id="import-va-export-mysql" class="wp-block-heading">Import và Export Mysql</h5>



<p>Để Export Mysql, ở đây ta sẽ sử dụng mysqldump, thực hiện câu lệnh sau tại terminal local:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="mysqldump -u user_db -pPass_xxxxx db_export &gt; ./db_backup.sql" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">mysqldump</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-u</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">user_db</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-pPass_xxxxx</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">db_export</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">./db_backup.sql</span></span></code></pre></div>



<p>Lưu ý để sử dụng được DB và import vào DB mới bạn cần xóa warning của mysqldump trong file db_backup.sql vừa export ra. Tìm dòng sau trong file và xóa:</p>



<p><em>mysqldump: [Warning] Using a password on the command line interface can be insecure.</em></p>



<p>Để Import Mysql vào db mới ta thực hiện lệnh:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Bash</span><span role="button" tabindex="0" data-code="mysql -u username -p db_export &lt; db_backup.sql" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">mysql</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-u</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">username</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-p</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">db_export</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&lt;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">db_backup.sql</span></span></code></pre></div>



<h5 id="tong-ket" class="wp-block-heading">Tổng kết</h5>



<p>Trên đây là toàn bộ quá trình cài đặt Mysql trên Amazon Linux 2023. Các bước hướng dẫn trên được tóm gọn dành cho người có kinh nghiệm khi cài đặt server. Nếu bạn có vấn đề gì trong quá trình cài đặt hãy để lại comment hoặc inbox mình sẽ hướng dẫn cho nhé.</p>



<p>Reference:</p>



<p><a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2023.html">https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2023.html</a></p>
<p>The post <a href="https://blog.tomosia.com.vn/cai-dat-mysql-tren-amazon-linux/">Cài đặt MySQL trên Amazon Linux</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/cai-dat-mysql-tren-amazon-linux/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
