Files
chill_notes/实践积累/个人知识库_Linux_阿里云_Ubuntu管理mysql.md
2026-04-21 11:49:59 +08:00

14 KiB
Executable File
Raw Blame History

一). 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 导入慢的解决方法 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> rootcocomap u mysqladmin u root p version Enter pa...

ysql show databases Sg Database I information perf...

进入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>

mysql use wordpress Database changed mysql show ta... 4. 4. aptget install mysqlserver aptget install ph...

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>