Files
chill_notes/Lunix/阿里云/Ubuntu管理mysql.md
2026-04-15 23:34:33 +08:00

302 lines
14 KiB
Markdown
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
一). ubuntu下mysql安装布局:
/usr/bin                      客户端程序和mysql_install_db
/db                             数据库和日志文件
/var/run mysqld        服务器
/etc/mysql mysql       配置文件my.cnf
/usr/share/mysql       字符集,基准程序和错误消息
/etc/init.d/mysql        启动mysql服务器
二). 设置mysql服务器随开关机自动启动和关闭
系统 \> 系统管理 \> 服务
进行到“服务设置”窗口后激活mysql数据库服务即可
三). 修改mysql数据库文件的存储目录
MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步
1、home目录下建立data目录
==cd /home==
==mkdir data==
2、把MySQL服务进程停掉
==mysqladmin -u root -p shutdown==
3、把/var/lib/mysql整个目录移到/home/data
==mv /var/lib/mysql== ==/home/data/==
这样就把MySQL的数据文件移动到了/home/data/mysql下
4、找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件请到/usr/share/mysql/下找到*.cnf文件拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
==[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf== ==/etc/my.cnf==
5、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为/home/mysql/mysql.sock 。操作如下:
==vi==  ==my.cnf==  ==(====用====vi====工具编辑====my.cnf====文件,找到下列数据修改之====)==
==# The MySQL server==
==[mysqld]==  ==port== === 3306==
==#socket==  === /var/lib/mysql/mysql.sock====(原内容,为了更稳妥用====“#”====注释此行)==
==socket==  === /home/data/mysql/mysql.sock== ==(加上此行)==
6、修改MySQL启动脚本/etc/init.d/mysql
最后需要修改MySQL启动脚本/etc/init.d/mysql把其中datadir=/var/lib/mysql一行中等号右边的路径改成你现在的实际存放路径home/data/mysql。
==[root@test1 etc]# vi== ==/etc/init.d/mysql==
==#datadir=/var/lib/mysql====(注释此行)==
==datadir=/home/data/mysql== ==(加上此行)==
7、重新启动MySQL服务
/etc/init.d/mysql start启动sudo /etc/init.d/mysql start 停止sudo /etc/init.d/mysql stop 重启sudo /etc/init.d/mysql restart
或用reboot命令重启Linux
如果工作正常移动就成功了否则对照前面的7步再检查一下。还要注意目录的属主和权限。
四). 配置mysql数据库的INNODB存储引擎
1 . 查看mysql存储引擎情况 登录mysql数据库在mysql\>提示符下搞入show engines;命令。发现: InnoDB | YES说明此mysql数据库服务器支持InnoDB引擎。
2. 设置InnoDB为默认引擎在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句,保存。
3. 重启mysql服务器mysqladmin -u root -p shutdown(回车)sudo /etc/init.d/mysql start(回车)。
4. 登录mysql数据库在mysql\>提示符下搞入show engines;命令。如果出现 InnoDB |DEFAULT则表示我们 设置InnoDB为默认引擎成功。
ps: 这里我用重启命令sudo /etc/init.d/mysql restart出现错误信息, 所以用了上面步骤3那种关闭服务又启动的笨方法。
、MYSQL数据库表大小写问题 
vi /etc/mysql/my.cnf 
在[mysqld]后添加 
lower_case_table_names=0 区分大小写 
lower_case_table_names=1 不区分大小写 
重启MYSQL服务
MYSQL在LINUX下数据库名、表名、列名、别名大小写规则如下 
1.数据库名与表名是严格区分大小写的 
2.表的别名是严格区分大小写的 
3.列名与列的别名在所有的情况下均是忽略大小写的 
4.变量名也是严格区分大小写的 
MYSQL在WINDOWS下都不区分大小写 
、管理Mysql
1、删除 mysql
1 sudo apt-get autoremove --purge mysql-server-5.0
2 sudo apt-get remove mysql-server
3 sudo apt-get autoremove mysql-server
4 sudo apt-get remove mysql-common (非常重要)
上面的其实有一些是多余的,建议还是按照顺序执行一遍
清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
==2、安装 mysql======
1 sudo apt-get install mysql-server
2 sudo apt-get install mysql-client
3 sudo apt-get install php5-mysql(安装php5-mysql 是将php和mysql连接起来 ) 
====
==一旦安装完成MySQL 服务器应该自动启动。您可以在终端提示符后运行以下命令来检查 MySQL 服务器是否正在运行:======
1 sudo netstat -tap | grep mysql
当您运行该命令时,您可以看到类似下面的行:
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -
如果服务器不能正常运行,您可以通过下列命令启动它:
1 sudo /etc/init.d/mysql restart
3、进入mysql
$mysql -u root -p 管理员密码
配置 MySQL 的管理员密码:
1 sudo mysqladmin -u root password newpassword
[MySQL 导入慢的解决方法](http://www.gagahappy.com/mysqldump-import-slow/)
MySQL导出的SQL语句在导入时有可能会非常非常慢。在导出时合理使用几个参数可以大大加快导 入的速度。
-e 使用包括几个VALUES列表的多行INSERT语法;
max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。
注意max_allowed_packet和net_buffer_length不能比目标数据库的设定数值 大,否则可能出错。
首先确定目标库的参数值
mysql\>show variables like max_allowed_packet;
mysql\>show variables like net_buffer_length;
根据参数值书写mysqldump命令
E:\eis\>mysqldump -uroot -p eis_db goodclassification -e max_allowed_packet=1048576 net_buffer_length=16384 \>good3.sql
==三====.====从数据库导出数据库文件:==
==1.====将数据库====mydb====导出到====e:\mysql\mydb.sql====文件中:==
==打开开始====-\>====运行====-\>====输入====cmd==    ==进入命令行模式==
==c:\\>mysqldump -h localhost -u root -p mydb \>e:\mysql\mydb.sql==
==然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。==
==2.====将数据库====mydb====中的====mytable====导出到====e:\mysql\mytable.sql====文件中:==
==c:\\>mysqldump -h localhost -u root -p mydb mytable\>e:\mysql\mytable.sql==
==3.====将数据库====mydb====的结构导出到====e:\mysql\mydb_stru.sql====文件中:==
==c:\\>mysqldump -h localhost -u root -p mydb --add-drop-table \>e:\mysql\mydb_stru.sql==
==四====.====从外部文件导入数据到数据库中:==
==从====e:\mysql\mydb2.sql====中将文件中的====SQL====语句导入数据库中:==
==1.====从命令行进入====mysql====,然后用命令====CREATE DATABASE mydb2;====创建数据库====mydb2====。==
==2.====退出====mysql== ==可以输入命令====exit====;或者====quit======
==3.====在====CMD====中输入下列命令:==
==c:\\>mysql -h localhost -u root -p mydb2 \< e:\mysql\mydb2.sql==
==然后输入密码,就====OK====了。==
==五====.====下面谈一下关于导入文件大小限制问题的解决:==
==默认情况下:====mysql== ==对导入文件大小有限制的,最大为====2M====,所以当文件很大时候,直接无法导入,下面就这个问题的解决列举如下:==
==1.====在====php.ini====中修改相关参数:==
==影响====mysql====导入文件大小的参数有三个:==
    ==memory_limit=128M,upload_max_filesize=2M,post_max_size=8M==
==修改====upload_max_filesize=200 M==  ==这里修改满足你需要的大小,==
==可以同时修改其他两项====memory_limit=250M  post_max_size=200M==
==这样就可以导入====200M====以下的====.sql====文件了==
\> 来自 \<[http://blog.csdn.net/qingrx/article/details/7987030](http://blog.csdn.net/qingrx/article/details/7987030)\>
![rootcocomap u mysqladmin u root p version Enter pa...](Exported%20image%2020260407231450-0.png)
![ysql show databases Sg Database I information perf...](Exported%20image%2020260407231452-1.png)
进入mysql
$mysql -u root -p 管理员密码
==进入MySQL Command line client下==
==查看当前使用的数据库:==
==mysql\>select database();==
==mysql\>status;==
==mysql\>show tables;==
==mysql\>show databases;//可以查看有哪些数据库,返回数据库名(databaseName)==
==mysql\>use databaseName;  //更换当前使用的数据库==
==mysql\>show tables; //返回当前数据库下的所有表的名称==
==或者也可以直接用以下命令==
==mysql\>show tables from databaseName;//databaseName可以用show databases得来==
==mysql查看表结构命令如下:==
==desc 表名;==
==show columns from 表名;==
==或者==
==describe 表名;==
==show create table 表名;==
==或者==
==use information_schema==
==select * from columns where table_name='表名';==
==查看警告:==
==Rows matched: 1  Changed: 0  Warnings: 1==
==mysql\> show warnings;==
\> 来自 \<[http://database.51cto.com/art/201011/234471.htm](http://database.51cto.com/art/201011/234471.htm)\>
![mysql use wordpress Database changed mysql show ta...](Exported%20image%2020260407231457-2.png) ![4. 4. aptget install mysqlserver aptget install ph...](Exported%20image%2020260407231502-3.png)
4]如何创建和删除一个数据库?
比如我要创建一个名为linux的数据库应该运行如下命令
mysql\> create database [数据库名];
所以我们应该运行如下的命令来创建名为linux的数据库
mysql\> create database linux;
Query OK, 1 row affected (0.00 sec)
是不是建好了呢肯定是建好了因为都有OK了:)
查看是不是有linux这个数据库了呢
代码:
mysql\> show databases;
+----------+
| Database |
+----------+
| linux |
| mysql |
| test |
+----------+
3 rows in set (0.00 sec)
那我们如何删除一个数据库呢??
mysql\> drop database [数据库名];
比如我们要把刚才创建的linux数据库删除应该用下面的命令
mysql\> drop database linux;
Query OK, 0 rows affected (0.00 sec)
是不是已经删除了呢??
代码:
mysql\> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec) 
5]如何操作一个数据库呢这个问题就比较多了建议还是看一下mysql的手册吧。里面的东西太多了。如果操作一个数据库首先是要指定一个数据库为当前数据库应该用use命令
mysql\>use [数据库];
比如我想指定linux这个数据库为当前数据库应该是
mysql\> use linux;
Database changed
6]如何备份数据库??
比如我们要备份mysql中已经存在的名为linux的数据库要用到命令mysqldump
命令格式如下:
shell\> mysqldump -uroot -p linux \> /root/linux.sql
Enter password:在这里输入数据库的密码
通过上面的命令,我们要明白两件事,首先备份数据库是要以数据库管理员的身份备份;其次:备份目的地是/root备份的文件名是linux.sql。其实备份的位置和文件名根据自己的情况来定。文件名可以自己来取路径也可以自己来安排
比如我想把linux的数据库备份到/home/beinan数据库的文件名为linuxsir031130.sql所以应该输入如下的命令。
shell\> mysqldump -uroot -p linux \> /home/beinan/linuxsir031130.sql
Enter password:在这里输入数据库管理员root的数据库密码
这样我们到/home/beinan目录下就能发现mysql中名为linux的数据库的备份文件linuxsir031130.sql
综上所述,我们学习时要学会变通。:):)
5]如何把把备份的数据库导入到数据库中?
首先我们还是要操作上面几个过程,比如添加数据库管理员(如果您没有添加过mysql数据库管理员的话),创建数据库等。
比如我们要把在/home/beinan这个目录中的linuxsir031130.sql这个备份导入名为linux的数据库中应该如下操作
shell\> mysql -uroot -p linux \< /home/beinan/linuxsir031130.sql
Enter password:在这里输入密码
如果机器好,数据库比较小,几分钟就好了。
6]其它一些比较常用的mysql指令
查看状态
mysql\> show status;
查看进程
代码:
mysql\> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+| 16 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec) 
查看表应该先指定一个数据库为当前数据库比如是名为linux的数据库
mysql\>use linux;
mysql\> show tables;
Empty set (0.00 sec)
7]对mysql数据库常用命令的一点补充
几个常用的mysql相关的管理命令
mysql 命令基本文本的显示和使用的mysql数据库。前面已经简单的提过用法比如登录等。
mysqladmin 命令用来创建和维护mysql数据库的命令前面已经简单的提过
isamchk 是用来修复、检查和优化.ism后缀的数据库文件
mysqldump 是用于备份数据库,前面已经简单的说明过;
myisamchk 用来修复.myi后缀的数据库文件
比如我们要检查名为linux的数据库.myi数据库表是否存在问题应该用下面的命令
要把mysqld服务器停下来
shell\> ../share/mysql.server stop
然后执行
shell\> myisamchk ../var/linux/*.MYI
上面的命令的意思就是检查所有的.myi文件数据库的目录在../var/linux/目录中
如果有问题,应该用-r参数来修复
shell\> myisamchk -r ../var/linux/*.MYI
6]mysqlshow 命令:显示用户选择的数据库和表
shell\> mysqlshow -uroot -p [数据库名]
比如我要查看名为linux的数据库应该是
shell\> mysqlshow -uroot -p linux
好了,到这里,你可能已经知道命令行下的所有基本操作了~
ps:补充一个。。
更改ROOT帐号名。
update set user="新名字" where user="旧名字";
\> 来自 \<[http://blog.csdn.net/princewong/article/details/2003658](http://blog.csdn.net/princewong/article/details/2003658)\>