My sql归档总结系列(一)

注:My sql系列归档多来自网络和参考手册

一:My SQL安装

1.1My sql的安装
shell>里面安装
groupadd mysql
useradd -g mysql mysql
gunzip < mysql-VERSION.tar.gz | tar -xvf -
cd mysql-VERSION
./configure --prefix=/usr/local/mysql
make
make install
cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
chown -R root  .
chown -R mysql var
chgrp -R mysql .
bin/mysqld_safe --user=mysql &

shell> bin/mysql_install_db --user=mysql
shell> scripts/mysql_install_db --user=mysql

启动MySQL服务器:
 shell> bin/mysqld_safe --user=mysql &
 
 shell> bin/mysqladmin version
 
1.2.
如果MySQL不能打开足够的文件或连接
检查
shell> cat /proc/sys/fs/file -max
shell> cat /proc/sys/fs/dquot-max
shell> cat /proc/sys/fs/super-max
修改配置:
如果有超过16MB的内存,应当在启动脚本中增加如下内容(例如,在SuSE Linux中:/etc/init.d/boot.local):

echo 65536 > /proc/sys/fs/file-max
echo 8192 > /proc/sys/fs/dquot-max
echo 1024 > /proc/sys/fs/super-max

 /etc/sysctl.conf中:
# Increase some values for MySQL
fs.file-max = 65536
fs.dquot-max = 8192
fs.super-max = 1024

你还应将以下内容加入/etc/my.cnf:
[mysqld_safe]
open-files-limit=8192

这样服务器连接和打开文件的总数目可以达到8,192。

1.3.如果启动mysqld时遇到Errcode 13(意味着Permission denied),
这意味着数据目录或其内容的访问权限不允许服务器访问。此时,你需要更改所调用文件和目录的权限,使服务器有权使用它们。
你还可以用root启动服务器,但是这样会造成安全问题,应当避免。

在Unix中,进入数据目录,检查数据目录和其内容的所有权,确保服务器可以访问。
例如,如果数据目录是/usr/local/mysql/var,使用命令:
ls -la /usr/local/mysql/var
如果数据目录或其文件或子目录不属于你运行服务器使用的账户,将所有权改为该账户:
chown –R mySQL /usr/local/mysql/var
chgrp –R mySQL /usr/local/mysql/var

1.4.My SQL日志
如果服务器不能正确启动,检查错误日志文件,看看是否可以找到原因。日志文件位于数据目录
在Windows中一般为C:\Program Files\MySQL\MySQL Server 5.1\data,
Unix二进制分发版为/usr/local/mysql/data,Unix源码分发版为/usr/local/var
查找数据目录中的host_name.err和host_name.log文件,其中host_name是你的服务器主机名。然后检查文件的最后几行。在Unix中,可以使用tail来显示:
 tail host_name.err
 tail host_name.log


二、My sql的启动和停止
2.1 启动和停止
 shell> bin/mysqld_safe --user=mysql &
 shell> bin/mysqladmin version
 关闭MySQL服务器:
 shell> bin/mysqladmin -u root shutdown

验证是否可以重启服务器。可以直接使用mysqld_safe或调用mysqld。例如:
shell> bin/mysqld_safe --user=mysql --log &

 直接调用mysqld
 调用mysqld_safe
 调用mysql.server
 
shell> mysql.server start
shell> mysql.server stop

2.2自动运行MySQL

    在 MySQL二进制包里面,有一个叫myslq.server的启动脚本程序。把它复制到/etc/rc.d/init.d目录里面:
        # cd /etc/rc.d/init.d
        # cp /usr/local/mysql/support-files/mysql.server mysql
    接着把它的属性改为“x”(executable,可执行)
        # chmod +x mysql
    最后,运行chkconfig把MySQL添加到你系统的启动服务组里面去。
        # /sbin/chkconfig --del mysql
        # /sbin/chkconfig --add mysql
        
 /etc/rc.d/init.d/mysql start
 /etc/rc.d/init.d/mysql stop

三、MySQL账户管理
3.1设置密码
在Unix中使用PASSWORD的方法:
shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');

用服务器主机名替换第二个SET PASSWORD语句中的host_name。这是指定的user表中的root non-localhost记录的Host列名。
如果你不知道是哪个主机名,在SET PASSWORD之前执行下面的语句:
mysql> SELECT Host, User FROM mysql.user;
查找在User列有root和在Host列没有localhost的记录。然后在第二个SET PASSWORD语句中使用该Host值。

为匿名账户指定密码的另一种方法是使用UPDATE直接修改用户表。用root连接服务器,运行UPDATE语句为相应user表
记录的Password列指定一个值。在Windows和Unix中的过程是相同的。下面的UPDATE语句同时为两个匿名账户指定密码:

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')    WHERE User = '';
mysql> FLUSH PRIVILEGES;
在user表中直接使用UPDATE更新密码后,必须让服务器用FLUSH PRIVILEGES重新读授权表。否则,重新启动服务器前,不会使用更改。

如果你宁愿删除匿名账户,操作方法是:
shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;

如果你只想删掉具有与root相同权限的匿名账户,方法为:
shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
mysql> FLUSH PRIVILEGES;
该账户允许匿名访问,但是拥有全部的权限,因此删掉它可以提高安全。

3.2 root账户指定密码。
三种方法:
·         使用SET PASSWORD语句
·         使用mysqladmin命令行客户端程序
·         使用UPDATE语句

要想使用SET PASSWORD指定密码,用root连接服务器并执行两个SET PASSWORD语句。一定要使用PASSWORD()函数来加密密码。
shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');
用服务器主机名替换第二个SET PASSWORD语句中的host_name。这是你指定匿名账户密码的主机名。

要想使用mysqladmin为root账户指定密码,执行下面的命令:
  shell> mysqladmin -u root password "newpwd"
  shell> mysqladmin -u root -h host_name password "newpwd"
如果密码中包含空格或专用于命令解释的其它字符,则需要用双引号引起来。

使用UPDATE直接修改user表。下面的UPDATE语句可以同时为两个root账户指定密码:

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
         WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

设置完密码后,当你连接服务器时你必须提供相应密码。例如,如果你想要用mysqladmin 关闭服务器,可以使用下面的命令:
shell> mysqladmin -u root -p shutdown

Enter password: (enter root password here)

----------------------------------------------------------------------


你可能感兴趣的:(mysql,安装)