linux怎么启动mysql服务器,第1张

Linux启动/停止/重启Mysql数据库的方法

1、查看mysql版本

方法一:status;

方法二:select version();

2、Mysql启动、停止、重启常用命令

a、启动方式

1、使用 service 启动:

[root@localhost /]# service mysqld start (50版本是mysqld)

[root@szxdb etc]# service mysql start (557版本是mysql)

2、使用 mysqld 脚本启动:

/etc/inintd/mysqld start

3、使用 safe_mysqld 启动:

safe_mysqld&

b、停止

1、使用 service 启动:

service mysqld stop

2、使用 mysqld 脚本启动:

/etc/inintd/mysqld stop

3、mysqladmin shutdown

c、重启

1、使用 service 启动:

service mysqld restart

service mysql restart (557版本命令)

2、使用 mysqld 脚本启动:

/etc/initd/mysqld restart

方法如下:

1、mysql中查看服务是否启动的有关命令和参数的意思。

2、在dos窗口运行命令,结果如图。

3、mysql服务停止后。

4、dos命令执行情况。

延展回答:

mysqladmin 是mysql查看服务器的命令 。

-u 是连接数据库的用户名 。

-h 是远程服务器的ip地址 。

-p 是登陆mysql的密码(注意p是小写的) 。

-P 是mysql的端口号(这里的p是大写的)。 

ping 本人理解就是ping mysql服务是否开启。

Linux作为类Unix,同样也存在这两种风格,其中Centos属于System V,本文主要介绍在Centos下(即System V风格)如何启动和关闭MySQL,同时简单介绍BSD系统的情况。

MySQL启动方式

1)直接调用mysqld。这是最不常见的方式,不推荐使用。

2)运行mysqlserver脚本

mysqlserver脚本通过调用mysqld_safe启动服务器,该脚本可以通过参数start和stop指定启动还是关闭。

mysqlserver脚本在MySQL安装目录下的share/mysql目录中,如果是采用源码安装的MySQL,则可以在support-files目录里找到。如果想使用mysqlserver,则必须把它复制到合适的运行级别目录中,如下所示:

1

2

[plain]

cp mysqlserver /etc/initd/mysqld

chmod 755 /etc/initd/mysqld

如上配置之后,就可以利用以下命令启动和关闭MySQL实例了:

[sql]

service mysqld start/stop

/etc/initd/mysqld start/stop

使用chkconfig命令配置开机自动启动:

[sql]

chkconfig --add mysqld

chkconfig mysqld on

运行以下命令检查是否正确启用:

[plain]

[root@data data]# chkconfig --list mysqld

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

MySQL关闭方式

一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况。拿到一台服务器,安装完mysql后进行启动,启动错误如下:

有同学会说,哥们儿你是不是buffer pool设置太大了,设置了96G内存。这明显提示无法分配内存嘛。如果真是这样也就不在这里进行分享了,哈哈。

我的服务器内存是128G。如下图:

服务器内存使用情况:

那么问题来了,既然还剩如此多的内存,为什么提示无法分配内存??。各位童鞋怎么看?

1 首先想到会不会是有几条内存坏了?于是运维的同学进行了检查,给我的反馈是硬件一切正常。

2 把mysql配置参数又检查了一遍,没有发现什么问题,线上一直就是使用这些参数。

3 又把文件拷贝到另外一台机器,,另外一台服务器可以正常启动(2台机器硬件配置一致)。

那么如果排除硬件问题,mysql配置问题,那么剩下的就只有操作系统的内核参数配置了。于是把两台服务器进行了对比,最终发现了一个内核参数不一致。

复制代码代码如下:

vmovercommit_memory

mysql启动正常的服务器改参数的值是0,而mysql启动错误的这台服务器该值是2。

那么问题来了,这个参数到底是什么鬼?竟然会让mysql分配内存失败,最后导致无法启动。经过查询资料知道了vmovercommit_memory是什么鬼。

vmovercommit_memory

默认值为:0

从内核文档里得知,该参数有三个值,分别是:

0:当用户空间请求更多的的内存时,内核尝试估算出剩余可用的内存。

1:当设这个参数值为1时,内核允许超量使用内存直到用完为止,主要用于科学计算

2:当设这个参数值为2时,内核会使用一个决不过量使用内存的算法,即系统整个内存地址空间不能超过swap+50%的RAM值,50%参数的设定是在overcommit_ratio中设定。

vmovercommit_ratio

默认值为:50

这个参数值只有在vmovercommit_memory=2的情况下,这个参数才会生效。

那么我们来看一下总的内存地址不能超过多少。其实是可以直接查看的。

[root@yayundeng 3306]# cat /proc/meminfo |grep -i commit

CommitLimit:  70144396 kB

Committed_AS:   135196 kB

[root@yayundeng 3306]#

通过查看可以得知在70G的样子。那么这个是如何计算的呢?这个就是上面提到的一个公式。swap+50%的RAM值,50%参数的设定是在overcommit_ratio中设定。

总虚拟内存 = 可用物理内存 × 百分比 + 交换分区

[root@yayundeng 3306]# cat /proc/meminfo | grep MemTotal

MemTotal:    132096808 kB

[root@yayundeng 3306]#

[root@yayundeng 3306]# free -k

total    used    free   shared  buffers   cached

Mem:   132096808  1583944 130512864     0   10240   133220

-/+ buffers/cache:  1440484 130656324

Swap:   4095992     0  4095992

[root@yayundeng 3306]# cat /proc/sys/vm/overcommit_ratio

50

[root@yayundeng 3306]#

总虚拟内存=132096808 50% + 4095992= 70144396 kB

那么最后的结果就是buffer pool不能超过70144396 kB - 135196 kB=70009200 KB=66G。实际上经过测试,buffer pool只能设置57G。

最后在看看总虚拟内存情况:

CommitLimit:最大可用虚拟内存

Committed_AS:已使用虚拟内存

[root@yayundeng 3306]# cat /proc/meminfo |grep -i commit

CommitLimit:  70144396 kB

Committed_AS:  65539208 kB

那么如果把内核参数vmovercommit_memory恢复为默认值0,那么将不会受到约束。

复制代码代码如下:

echo 0 > /proc/sys/vm/overcommit_memory

参考资料:

http://serverfaultcom/questions/606185/how-does-vm-overcommit-memory-work

http://linuxperfcom/p=102 

总结:

说了这么多,那么为什么要修改内核参数vmovercommit_memory的值呢?这个是因为这台服务器之前跑过GreenPlum数据库,拿到我手上的时候没有进行重装系统,那么还是建议如果拿到的机器之前跑过其他的业务,那么保险的方法还是重装一下系统,然后再部署自己的业务,不然真的会出现莫名其妙的问题。

开启 MySQL 的远程登陆帐号需要注意下面3点: 1、确定服务器上的防火墙没有阻止 3306 端口。 MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 3306 端口连接到 MySQL 的。 如果您在安装 MySQL 时指定了其他端口,请在防火

开启 MySQL 的远程登陆帐号需要注意下面3点:

1、确定服务器上的防火墙没有阻止 3306 端口。

MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 3306 端口连接到 MySQL 的。

如果您在安装 MySQL 时指定了其他端口,请在防火墙中开启您指定的 MySQL 使用的端口号。

如果不知道怎样设置您的服务器上的防火墙,请向您的服务器管理员咨询。

2确定安全狗等没有拦截我们的备份服务器IP

如果你的服务器上有安装安全狗等安全类软件,请将我们的备份服务器IP 115283660以及其他的备份服务器IP添加到白名单中。

3、增加允许远程连接 MySQL 用户并授权。

1)登陆服务器端,进入命令行。

Windows 主机中是点击开始菜单,运行,输入“cmd”,进入命令行。

2)以数据库管理员帐号进入mysql控制台。在命令行执行 mysql -u root -p 密码,输入完成后即可进入mysql控制台。

例如: MySQL -uroot -p123456

123456 为 root 用户的密码。

3)创建远程登陆用户并授权,在控制台继续执行下面语句。

grant select,lock tables on demodb to demouser@'115283660′ identified by 'your password';

解释:demodb=数据库名;demouser=数据库用户名;your password=数据库密码

例如:

grant select,lock tables on discuz to ted@'115283660′ identified by '123456′;

4)执行了上面的语句后,再执行下面的语句,方可立即生效。

flush privileges;

小编解释:

grant select,lock tables on discuz to ted@'115283660′ identified by '123456′;

上面的语句表示将 discuz 数据库的select,locked权限授权给 ted 这个用户,允许 ted 用户在 115283660 这个 IP 进行远程登陆,并设置 ted 用户的密码为 123456 。

discuz 表示上面的权限是针对于哪个表的,discuz 指的是数据库,后面的 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“”,对于某一数据库的全部表授权为“数据库名”,对于某一数据库的某一表授 权为“数据库名表名”。

ted 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

115283660 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。

注意:

115283660是我们的一个备份服务器IP,主要用来测试我们的服务器是否能够连接上你的数据库。

这里很多朋友会有疑问,这样会不会不安全啊,其实不用担心,因为首先,你只是授权允许我们的服务器连接你的数据库,其次,我们的服务器也只具有select和lock权限,也就是查询和锁表的权限,所以完全不能更改你的数据库。

不放心的话可以在mysql控制台执行 select host, user from user; 检查一下用户表里的内容因为开启mysql远程登录的用户都是存储在mysql数据库中的user表中。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux怎么启动mysql服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情