- Take for example
10.0.159.22
- Using a calculator (!!!), convert each of the four numbers to hexadecimal (you get
0a.00.9f.16
) - Then glue the four hexadecimal numbers together, after removing the dots, and, again with the calculator, convert them to decimal (
0a009f16HEX=167812886DEC
) - Use this number (167812886) as your server ID in the options file.
Had the authors searched the MySQL manual for "IP address", they would have found the INET_ATON function, which can be used like this:
select inet_aton('10.0.159.22'); +--------------------------+ | inet_aton('10.0.159.22') | +--------------------------+ | 167812886 | +--------------------------+
Update.
Of course, if you want to ignore INET_ATON and avoid using a calculator, you can still leverage the server to do something like this:
delimiter // drop function if exists redundant_inet_aton // create function redundant_inet_aton(IP varchar(16)) returns bigint deterministic begin return conv( concat( lpad(hex(substring_index(IP, '.', 1)+0),2,'0'), lpad(hex(substring_index( substring_index(IP, '.', 2), '.', -1) +0 ),2,'0'), lpad(hex(substring_index( substring_index(IP, '.', 3), '.', -1) +0 ),2,'0'), lpad(hex(substring_index(IP, '.', -1) +0),2,'0') ), 16,10); end // # # Probably good for an obfuscated code contest # delimiter ; # # testing the new function # select IP, redundant_inet_aton(IP), inet_aton(IP) from ( SELECT '10.0.159.22' AS IP UNION SELECT '192.168.2.6' UNION SELECT '127.0.0.1' UNION SELECT '10.176.1.15' UNION SELECT '173.194.36.104' ) as t; +----------------+-------------------------+---------------+ | IP | redundant_inet_aton(IP) | inet_aton(IP) | +----------------+-------------------------+---------------+ | 10.0.159.22 | 167812886 | 167812886 | | 192.168.2.6 | 3232236038 | 3232236038 | | 127.0.0.1 | 2130706433 | 2130706433 | | 10.176.1.15 | 179306767 | 179306767 | | 173.194.36.104 | 2915181672 | 2915181672 | +----------------+-------------------------+---------------+