好久之前的学习笔记,分享出来,希望能帮助到更多初学者
备注:本笔记以mysql-5.1.73版本为例进行说明
1. mysql源码编译/安装步骤
1) 官网下载mysql源码并解压
2) cd至源码目录,执行
./configure --prefix=/home/slvher/tools/mysql-5.1.73 --with-charset=gbk --with-charset=gb2312 --with-extra-charsets=all --with-plugins=max-no-ndb备注:
shell> make shell> make install备注1:若 install失败是由第2步执行./configure时参数指定错误所致,则需重新执行./configure 且务必执行make clean后 ,再重新make && make install。若不先make clean直接make,则源码目录下上次编译完的部分文件不会重新编译,而这些上次编译的文件使用的还是上次的错误配置参数!
./bin/mysql_install_db --basedir=/home/slvher/tools/mysql-5.1.73 --datadir=/home/slvher/tools/mysql-5.1.73/db-data ./bin/mysql_install_db --user=slvher6) 在mysql安装目录执行如下命令启动mysqld:
./bin/mysqld_safe &7) 执行ps -x查看mysqld是否启动成功,其中d表示守护模式。因此,正常的关闭mysqlserver的方法应该是下面的命令:
./bin/mysqladmin shutdown -uroot -p然后输入root密码即可停掉mysqld进程,若强行kill -9杀进程可能会导致数据库损坏!
shell> mysql -uroot mysql> show character set;备注1: 新安装的mysql server,root默认密码为空
2. 安装完成并启动mysqld_safe后的访问权限配置
1) 设定mysql server的root密码
root密码默认为空(因此,运行mysql -uroot可直接登录;此外,登录后运行"select User, Host, Password from mysql.user"可以看到root的Password那个字段为空),所以需要设定root密码,方法有几种:
a. 使用set password语句:
shell> mysql -u root mysql> set password for 'root'@'localhost' = PASSWORD('xxx'); # 其中xxx为新密码 mysql> set password for 'root'@'host_name' = PASSWORD('xxx'); # 其中host_name为机器名 mysql> set password for 'root'@'127.0.0.1' = PASSWORD('xxx');b. 使用update语句:
shell> mysql -u root mysql> update mysql.user set Password = PASSWORD('xxx') where User = 'root'; mysql> flush privileges; # 该语句会让mysql server重新读取权限表若root对应的Host字段有多个,则推荐使用这种方法指定root密码,因为它明显更简洁。
shell> mysqladmin -u root password "xxx" shell> mysqladmin -u root -h host_name passord "xxx"这种方法无法设定形如'root'@'127.0.0.1'的root新密码,故个人觉得用处不大。
2) 添加新用户并授权
由于root权限过大,有必要为mysql添加normal user并设定其权限,可通过以下步骤实现(假设已登录了mysql server所在机器):
shell> mysql -u root -pxxx # 注意-p与password(假设为"xxx")间无空格,可省去输入密码的交互过程 mysql> create user work; mysql> grant select on db1.test_table to 'user'@'localhost' identified by 'xxx';上述grant语句执行效果:从localhost登录的user必须用xxx密码才能登录成功,且只能访问数据库db1的test_table表。
mysql> grant all privileges on *.* to 'user'@'localhost' identified by 'xxx';若为远程登录的用户授权(对db1.test_table的select/insert权限),则需执行下面的命令:
mysql> grant select, insert on db1.test_table to 'user'@'%' identified by 'xxx';上述语句中的'%'表示任意主机,因此可以覆盖远程登录的情况。
【参考资料】
1. mysql reference manual
2. mysql: unknown variable 'character-set-server=utf8'解决方法
========================= EOF ==========================