Update from Sync Service
This commit is contained in:
304
附件/2026/个人知识库/Linux/阿里云_Ubuntu管理mysql.md
Executable file
304
附件/2026/个人知识库/Linux/阿里云_Ubuntu管理mysql.md
Executable file
@@ -0,0 +1,304 @@
|
||||
一). 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)>
|
||||

|
||||
|
||||

|
||||
|
||||
进入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)>
|
||||
|
||||
|
||||
 
|
||||
|
||||
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帐号名。
|
||||
|
||||
```sql
|
||||
update set user="新名字" where user="旧名字";
|
||||
```
|
||||
> 来自 <[http://blog.csdn.net/princewong/article/details/2003658](http://blog.csdn.net/princewong/article/details/2003658)>
|
||||
Reference in New Issue
Block a user