Solaris10下mysql的pkg安装方法

网络整理 - 06-30

  花了一晚上才把Apache+PHP+MySQL在Solaris上面搞定而mysql的安装的确是很容易出问题!

  以root登录系统
从网站下载安装文件mysqlbetasolarissparcbitpkggz保存到/tmp
解压缩gz格式安装文件gunzip mysqlbetasolarissparcbitpkggz
建立mysql用户组和用户并为用户指定home目录
groupadd mysql
useradd g mysql mysql
mkdir /export/home/mysql
chgrp mysql /export/home/mysql
chown mysql /export/home/mysql
usermod d /export/home/mysql mysql
可以用su mysql验证mysql能否登录
安装pkg
pkgadd d mysqlbetasolarissparcbitpkg
MySQL被安装到/opt/mysql/mysql/
安装后的任务
建立目录连接
cd /usr/local
ln s /opt/mysql/mysql/ mysql
建立配置文件
vi /etc/f

[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
初始化MySQL
cd /usr/local/mysql
scripts/mysql_install_db user=mysql
启动MySQL服务器
切换到mysql用户
/usr/local/mysql/bin/mysqldmax &
或者
/usr/local/mysql/bin/mysqldmax user=mysql&
root用户不能直接启动MySQL服务器
关闭服务器
mysqladmin u root shutdown

卸载MySQL
root用户执行
pkgrm mysql
从二进制分发包安装mysql比从源代码安装还是简单
但是MySQL的安装手册里没有给出各种错误的解决办法
比如我曾经遇到的
/opt/mysql/mysql/bin/mysqldmax: Table mysqlgeneral_log doesnt exist
:: [ERROR] Fatal error: Cant open and lock privilege tables: Table mysqlhost doesnt exist
就是因为没有建立配置文件 /etc/f
而且pkg包自动为MySQL相关目录建立权限不需要像安装手册说的手工做

顺带记录一下在MySQL配置过程中可能会用到的重要东西

通过直接修改授权表设置用户权限

  shell> mysql user=root mysql

  mysql> INSERT INTO user (HostUserPassword) VALUES(localhostcustomPASSWORD(stupid));

  mysql> INSERT INTO user (HostUserPassword) VALUES(serverdomaincustomPASSWORD(stupid));

  mysql> INSERT INTO user (HostUserPassword) VALUES(whitehousegovcustomPASSWORD(stupid));

  mysql> INSERT INTO db 

    (HostDbUserSelect_privInsert_privUpdate_privDelete_priv  Create_privDrop_priv)

  VALUES  (localhostbankaccountcustomYYYYYY);

  mysql> INSERT INTO db

  (HostDbUserSelect_privInsert_privUpdate_privDelete_priv Create_privDrop_priv)

  VALUES (whitehousegovexpensescustomYYYYYY);

  mysql> INSERT INTO db (HostDbUserSelect_privInsert_privUpdate_privDelete_priv Create_privDrop_priv)

  VALUES(%customercustomYYYYYY);

  mysql> FLUSH PRIVILEGES;




默认情况下mysql是不能远程连接的需要修改权限设置
两种方法

  在命令行下可以有两种大同小异的方法来作此设置

  ()mysql>GRANT ALL PRIVILEGES ON ** TO root@localhost IDENTIFIED BY something WITH GRANT OPTION;

  mysql>GRANT ALL PRIVILEGES ON ** TO root@% IDENTIFIED BY something WITH GRANT OPTION;

  第一句增加了一个root用户授权通过本地机(localhost)访问密码something

  第二句则是使用通配符授与root用户从任何其它主机发起的访问

   

  ()亦可直接使用update语句修改user表使用root用户或其他用户登录mysql转到mysql数据库

  update user set host=localhost where user=root;

  flush privileges;//只允许root在本机登录

   

  update user set host=% where user=root;

  flush privileges;//允许root远程访问



在以上版本的MySQL中的密码的哈希算法有了变化可能会导致一些使用老协议的客户端连接失败提示错误信息 Client does not support authentication protocol requested by server; consider upgrading MySQL client 这是相应的处理方法
mysql>  UPDATE mysqluser SET password = OLD_PASSWORD(yourpwd)  WHERE host = yourhost AND user=username;

mysql> FLUSH PRIVILEGES;
 

  Trackback: x?PostId=